タグ

gemに関するmas-higaのブックマーク (63)

  • Runa: Ruby で中規模アプリケーションを書くためのフレームワーク - ブログのおんがえし

    Runa という Ruby で Gem を使ったり複数ファイルで構成された中規模のアプリケーションを簡単に書くためのフレームワークを作っています。 Runa を作った経緯 Ruby は単独のスクリプトファイルとして実行するときは取り回しも簡単で大変使いやすい(小規模アプリケーション) が、特定の gem に依存したり複数ファイルで構成されるようなアプリケーションを作ろうとするとスタンダードな方法が用意されておらず(特に配布や共有のことを考えると)敷居が高くなってしまう(中規模アプリケーション) これが今まで余り問題にならなかったのは、Web アプリであれば Rails がその辺りも面倒をみてくれたり、コンソールアプリケーションなら gem で配布するみたいな方法でやりくりしてきた経緯がある。しかし gem で配布するには RubyGems のアカウントが必要だったり、昨今のセキュリティ問題

    Runa: Ruby で中規模アプリケーションを書くためのフレームワーク - ブログのおんがえし
  • Rubyとnamespaceと拡張ライブラリについて - なるせにっき

    2020年代はモノリスの時代 ここ10年ほど流行っていたマイクロサービスについての理解が深まり、その限界が広く知られるようになってきた。ShopifyのModular Monolithについての記事などは代表例だろう。並行して必要性が叫ばれるようになってきたのがnamespaceだ。RubyKaigi 2023ではshioyamaさんがMultiverse Rubyと題して発表をしていたし、その後tagomorisさんも記事を書いている Rubyでは以前からnamespaceへの議論が行われてはいたのだが、Ruby 2.0の頃の議論では主にMonkey Patchingによる副作用を局所化するためのものだった。当時の議論とはライブラリ読み込みの局所化という課題が挙がっている点が異なっており、それに伴い技術的な困難も異なる。上述の記事でもそれらの多くは整理されているのだが、この記事ではまだ議

    Rubyとnamespaceと拡張ライブラリについて - なるせにっき
  • RubyGemsの運営元が「Ruby Shield」を発表。RubyとRailsへのサプライチェーン攻撃への対策としてShopifyが4年で100万ドル(約1億3000万円)を提供

    RubyGemsの運営元が「Ruby Shield」を発表。RubyRailsへのサプライチェーン攻撃への対策としてShopifyが4年で100万ドル(約1億3000万円)を提供 Ruby言語用のパッケージであるGemのホスティングサービス「RubyGems.org」を運営するRuby Centralは、RubyRailsに対するサプライチェーン攻撃への対応を行うプロジェクトRuby Shield」を開始すると発表しました。 Today we’re excited to announce Ruby Shield This new initiative in partnership with @ShopifyEng will support open-source and enable us to take on new security-focused projects to bet

    RubyGemsの運営元が「Ruby Shield」を発表。RubyとRailsへのサプライチェーン攻撃への対策としてShopifyが4年で100万ドル(約1億3000万円)を提供
  • websocket-client-simpleをruby-jpに移管した - 橋本商会

    で、1年ぐらい趣味と大学での研究を兼ねて色々開発した後、やっぱりこの分野はRubyよりNode.jsでやった方が良いなと思った

    websocket-client-simpleをruby-jpに移管した - 橋本商会
    mas-higa
    mas-higa 2022/01/11
    "ソースコードがOSSのライセンスで公開されてるのだから、forkして勝手にやってくれ" / "依存チェーンの底の方のライブラリの修正はとても難しい"
  • ruby-jpでwebsocket-client-simpleというgemの開発を引き取った経緯 | うなすけとあれこれ

    ただdeployしたかっただけなのに 僕のお手伝いしている、とある会社ではdeployをSlack botから行っていましたが、ある日そのbotが動かなくなっていました。Twitterでも少し話題になったので覚えていらっしゃる方もいると思います。 Rubotyで動いてた煉獄さんがSlack RTM周りの変更で動かなくなってしまったためGitHub Actionsに載せ替えました。通知の責務に関しては、炭治郎が受け継ぎました pic.twitter.com/nM4hvc5oTL — 黒曜@Leaner Technologies (@kokuyouwind) December 7, 2021 このとき何が起こっていたのか。前述したとある会社では、Slack bot frameworkとしてRubotyを、Slackとの通信にはruboty-slack_rtm gemを使っていました。 r7ka

    ruby-jpでwebsocket-client-simpleというgemの開発を引き取った経緯 | うなすけとあれこれ
    mas-higa
    mas-higa 2022/01/11
    "CIが定期的に実行されるように設定しておきます。これにより、依存している別のgemの破壊的変更にすばやく気づくことができるようになります。"
  • 簡単に使えるRubyプロファイラ - EstackprofというGem作りました

    使い方 インストール Bundlerを使う場合 Gemfile gem 'estackprof' bundle install します。 $ bundle install Bundlerを使わない場合 $ gem install estackprof プロファイリングを有効化 StackProf同様、RackMiddlewareとしてアプリケーションに組み込むことができます。StackProfと同様のオプションをサポートしていますが、オプションを省略した場合にもデフォルト設定でいい感じに動作するようにしています。 以下、アプリケーションのソースコードへの記述例です。 app.rb require 'estackprof' use Estackprof::Middleware # ...your rack application レポーティング アプリケーションを動作させたあと、以下のコマン

    簡単に使えるRubyプロファイラ - EstackprofというGem作りました
  • YouPlot - 標準入力からターミナルにグラフを描出するツール - Qiita

    はじめに こんにちは。昨年のアドベントカレンダーでは、GR.rbというRubyでグラフを描出するツールを紹介いたしました。 Rubyでグラフを描画するツール GR.rb の紹介 今年はYouPlotというツールを作ったので紹介します。 Github: https://github.com/kojix2/youplot YouPlotは、ターミナルにグラフを描出するソフトです ターミナルの画面にアスキーアートでグラフを表示したいと思ったことはありませんか?YouPlotはそのためのツールです。グラフを描出するエンジンの部分は、mrknさんの作ったUnicodePlotを利用しています。エンジンの部分を作る記事ではありません。 この記事では、前半でYouPlotの使い方を簡単に紹介し、後半でコマンドラインツールをRubyで作る上で感じたことを書きます。 Uplotのつかい方 インストール

    YouPlot - 標準入力からターミナルにグラフを描出するツール - Qiita
    mas-higa
    mas-higa 2020/12/07
    s/uplot color で/uplot colors で/
  • GistでGemを公開

    Gistにファイルを置くだけで、Gemとして公開できる。 最小構成だと、gemspecとソースコードをGistに配置すれば良い。 Gem::Specification.new do |spec| spec.name = 'my_gem' spec.version = '0.0.1' spec.authors = ['Your Name'] spec.email = ['[email protected]'] spec.summary = 'Summary of this gem' spec.files = ['my_gem.rb'] spec.require_path = '.' end # ここに好きなコードを書く 使う側では、gitプロトコルでGistのGitリポジトリとしてのURLを指定すれば良い。 gem 'my_gem', git: 'https://gist.github.co

    GistでGemを公開
  • Ruby 2.7 の変更点 - StringScanner / open-uri / CSV - tmtms のメモ

    Ruby 2.7 アドベントカレンダーの24日目の記事です。 qiita.com StringScanner とか CSVRuby の標準ライブラリだけど体の外で開発されているやつで、NEWSを見ても詳しくは書いてなかったので、調べてみました。 StringScanner fixed anchor モード open-uri Kernel.open で warning text/* のデフォルトの charset が UTF-8CSV quote_empty オプション write_converters オプション write_nil_value オプション write_empty_value オプション strip オプション StringScanner fixed anchor モード StringScanner.new 時に fixed_anchor: true を指定す

    Ruby 2.7 の変更点 - StringScanner / open-uri / CSV - tmtms のメモ
    mas-higa
    mas-higa 2020/01/16
    “標準ライブラリ” bundled gem かと思ったら default gem だった。
  • XML文書からXPathで要素を抜き出すCLIツールを作った - satoryuの日記

    この記事はRuby Advent Calendar 2019 10日目の記事です。 久しぶりにアドベントカレンダーにエントリーしたので、最近作ってみたいと思った地味なgemを作りました。 TL;DR 作ったものはこちらです。 github.com しかしながらRubygems.orgのMFAで詰まってしまっていて、まだリリースできていません。 もし使う場合は、上のリポジトリをcloneしてgemファイルをビルドし、インストールする必要があります。 動機 お仕事でXMLドキュメントを解析しながらそれを処理する必要がありました。 複雑なXMLドキュメントで、スキーマもいまいちわからないものだったので、いきなりコードを書くよりも、必要な情報を抜き出すためのXPathはどんなものだろうかというのを試行錯誤するところからはじめました。 XMLパーサーといえばNokogiriと思い、nokogiriに

    XML文書からXPathで要素を抜き出すCLIツールを作った - satoryuの日記
    mas-higa
    mas-higa 2019/12/12
    2FA 面倒そう
  • 2019年、fat gemをやめる - 2019-11-22 - ククログ

    fat gemを簡単に作れるようにするgemであるrake-compilerをメンテナンスしている須藤です。過去にfat gemの作り方をまとめたこともあります。 Ruby 1.8.7/1.9.1どちらでも使えるWindows用バイナリ入りgemをDebian GNU/Linux上で作る方法 Windowsの32bit/64bitRuby用バイナリ入りgemをDebian GNU/Linux上で作る方法 fat gemが有用な時代もあったのですが、今はメリットよりもデメリットの方が大きいのでfat gemをやめたらどうか、という話をします。 fat gemについて fat gemとはビルド済みバイナリーが入ったgemのことです。Pythonで言えばwheelのようなものです。 RubyはC言語でRuby用のライブラリーを実装することができます。これを拡張ライブラリーと呼びます。拡張ライブ

    2019年、fat gemをやめる - 2019-11-22 - ククログ
    mas-higa
    mas-higa 2019/11/25
    Windows では Cygwin を使っているのですが...
  • RubyGemパッケージrest-client、バックドアを含むバージョンが立て続けに公開される | スラド セキュリティ

    RubyGemパッケージ「rest-client」のメインテナーのRubyGem.orgアカウントが不正アクセスを受け、悪意あるコードを含むバージョンが立て続けに公開されていたそうだ(rest-client Issue#713、 The Registerの記事、 CVE-2019-15224)。 不正に公開されたのはバージョン1.6.10/1.6.11/1.6.12/1.6.13の4バージョン。1.6.13では外部にデータを送信するコードをpastebinからダウンロードして実行するコードが含まれていたという。1.6.x系列は2014年に1.7.0で置き換えられた非常に古いバージョンで、何らかの理由により最新版へアップグレードできない場合のために残されているものだが、1.6.13は1,061回ダウンロードされていたそうだ。 不正アクセスを受けたメインテナーのHacker Newsへの投稿に

  • 「rest-client」など11のRubyライブラリにバックドアが発見される

    Catalin Cimpanu (Special to ZDNET.com) 翻訳校正: 編集部 2019-08-21 12:59 RubyGemsパッケージリポジトリのメンテナーは、11のRubyライブラリから、バックドアが仕込まれた18のバージョンを削除した。 これらの悪質なコードは、米国時間8月19日に極めて人気の高いRubyライブラリである「rest-client」の4つのバージョンで最初に発見された。 オランダ人Ruby開発者であるJan Dintel氏の分析によれば、rest-clientで発見された悪質なコードは、侵害されたシステムからURLと環境変数の内容を収集し、ウクライナにあるサーバーに送信していた。 また、このコードにはバックドアが仕込まれており、攻撃者が侵害されたプロジェクトにクッキーファイルを送り込むことで、任意のコードを実行できるようになっていた。 その後、Ru

    「rest-client」など11のRubyライブラリにバックドアが発見される
    mas-higa
    mas-higa 2019/08/23
    これ rest-client に手を出さなかったら、そのまま人知れず活動できてたってこと?
  • Gemの作り方まとめ 普通のgem編 - masarakki's blog

    会社の人にgemの作り方まとめてくれって言われたので標準的なgemの作り方をまとめます。 標準的な作り方なので他の人が作ったgemを読み解くヒントにもなります。 とはいえ有名なgemは(有名なgemに限って)メッチャクチャだったりするので読みづらかったりします。 歴史が古かったりすると特にね。 ジェネレータ まずはジェネレータを使ってプロジェクトを作りましょう。 昔はいろいろあったけど最近は bundle コマンドで大勢が決定してる感じです。 bundle gem test_gem -t -t はテストも作成するオプションです。デフォルトでrspecを使うようになってます。 その他のオプションは bundle help gem で確認できます。 Railsプラグインのgemを作る場合は rails plugin new test_gem を使う方法もあります。 別記事で詳しく書く予定です。

  • serverengine を使い、Rubyでもサーバーを書こう - ローファイ日記

    Rubyを書いていると、サーバを書きたくなることがあります。皆さんもそうだと思います。 ということで今日はRubyでスッとサーバを書くためのgem、serverengineの簡単な使い方メモ。 github.com Rubyでサーバを書きたくなった時 そもそも的に、Rubyでただサーバを書くのは非常に簡単である。具体的には Kernel#loop などを回してその中でリクエストを待ったり、何かしら処理を行えば終わり。特別なgemは必要ないし、TCPを扱うクラスなども組み込みで用意されている。 以下のような9行のスクリプトを起動すれば、サーバを書いたと言える。ところで TCPServer#accept_nonblockでないと、acceptでブロックしてしまって終了処理が遅れたりするのでノンブロッキングの方のAPIを好んで使うのがいいだろう。 require 'socket' server

    serverengine を使い、Rubyでもサーバーを書こう - ローファイ日記
  • Ruby の lazy loading の仕組みを利用して未使用の gem を探す - クックパッド開発者ブログ

    技術部開発基盤グループのシム(@shia)です。 最近は cookpad のメインレポジトリを開発しやすい環境に改善するために様々な試みをしています。 この記事ではその試みの一つとして不要な gem を検出し、削除した方法を紹介したいと思います。 背景 cookpad は10年以上にわたって運用されている巨大なウェブアプリケーションです。 巨大かつ古いアプリケーションには昔は使っていたが、現在は使われてない依存性などが技術負債として溜まっています。 事業的観点から技術的負債を完全返却するのはコストとのバランスが悪いことも多いです。 これは20万行を超えるプロジェクトを幾つも抱えている cookpad のメインレポジトリも例外ではなく、その規模から使ってないと思われる依存性を探しだすのも大変な状況でした。 どうするか 人が頑張るより機械に頑張らせたほうが楽ができるし、何より確実です。 ですの

    Ruby の lazy loading の仕組みを利用して未使用の gem を探す - クックパッド開発者ブログ
    mas-higa
    mas-higa 2018/04/04
    "少しだけ Ruby のコードを見てみましょう" C 言語のコードやん。Ruby のコードちゃうやん。Ruby のソースコードやん。
  • RubyGems 2.7.6 がリリースされた - HsbtDiary(2018-02-16)

    RubyGems 2.7.6 がリリースされた 昼過ぎにいきなりリリースされてびっくりしたけど、なんとか Ruby 2.2-2.5 用のパッチを作った。 http://blog.rubygems.org/2018/02/15/2.7.6-released.html https://bugs.ruby-lang.org/issues/14481 とりあえず gem update --system すれば RubyGems 2.7 にアップグレードされるので、それでいい人はそれでもいいんですが、production の環境などでそんなことやらないよという人は上記の僕が作ったパッチが適用された Ruby のリリースを待つか rbenv を使っているならパッチをダウンロードしてから $ cat rubygems-276-ruby23.patch | rbenv install --patch

    RubyGems 2.7.6 がリリースされた - HsbtDiary(2018-02-16)
  • RubyGems の複数の脆弱性について

    Posted by usa on 17 Feb 2018 Ruby の標準添付ライブラリである RubyGems に、複数の脆弱性が発見されました。 RubyGems の公式ブログにて報告されています。 詳細 以下の脆弱性が報告されています。 Prevent path traversal when writing to a symlinked basedir outside of the root. Fix possible Unsafe Object Deserialization Vulnerability in gem owner. Strictly interpret octal fields in tar headers. Raise a security error when there are duplicate files in a package. Enforce URL

    mas-higa
    mas-higa 2018/02/19
    感謝
  • Yasuriでお手軽スクレイピング - Qiita

    require 'yasuri' # "Rubyに関する新着投稿 - Qiita" を起点にする agent = Mechanize.new page = agent.get('http://qiita.com/tags/Ruby/items') # 最新3ページをスクレイピングする init_page = Yasuri.pages_init '//*[@id="main"]/div/div/div[1]/section/div[2]/ul/li[7]/a', limit:3 do # 現在のページ数 text_page_idx '//*[@id="main"]/div/div/div[1]/section/div[2]/ul/li[@class="active"]/a', proc: :to_i # 各エントリをスクレイピング struct_entries '//*[@id="main"

    Yasuriでお手軽スクレイピング - Qiita
  • 近デジダウンローダーをDockerで動かせるようにした - hitode909の日記

    近デジダウンローダーはRubyで書かれていて,その実装にあたってはNokogiriやImageMagickなど,いろんなライブラリが使われていて,その利用にあたってはインストールに失敗してはエラーメッセージでググって勘で対応する,みたいなことがよくおこなわれている. 僕もたまに動かそうとするとなんか壊れたりしてて,こんなことで悩みたくないので難しかった. …という課題感が以前からあって,Dockerで動くようになればポータビリティが上がってセットアップしやすくなってよさそうと思ったのでやってみた. docker run hitode909/kindairb で動く Dockerをインストール済なら以下の1コマンドで動く. ワーキングディレクトリに柳田国男編,桃太郎の誕生がダウンロードされるはず.簡単. docker run --rm --volume "$PWD":/workdir hit

    近デジダウンローダーをDockerで動かせるようにした - hitode909の日記
    mas-higa
    mas-higa 2017/03/21
    その昔「Ruby って tdiary 動かすのに必要なやつでしょ」と言われていた。これからは「Ruby って近デジダウンロードするのに必要なやつでしょ」と言われるようになると幸せになる (誰が?)