woshidan's loose leaf

ぼんやり勉強しています

Ruby

会社のrubyのバージョンが2.4.0以降にあげられないので `Array#-` と同等のスニペットをおいておく

irb(main):010:0> class Array irb(main):011:1> def - other irb(main):012:2> copy = self.dup irb(main):013:2> other.each do |other_array_item| irb(main):014:3* copy.delete other_array_item irb(main):015:3> end irb(main):016:2> copy irb(main)…

自作クラスのテスト用にComparableモジュールと宇宙船演算子を使って同じオブジェクトか比較しやすくする

rubyでちょっとした処理を担当する自作クラスのテストをするとき、同じオブジェクトがどうかの比較する際、 assert_equal expect_obj.hash_value, actual_obj.hash_value # hash_valueはオブジェクトのidではないオブジェクトに特有の値 というような式をよ…

rubyでライブラリなどを書くとき、Rakefileと相対パスのrequireを使ってクラスの取得やテストをやりやすくする

+---+ lib | +-+ some_module | +-+-- a_processor | | +-- order.rb | | +-- item.rb | +-- b_processor | | +-- order.rb | | +-- item.rb | +-- composer.rb # composerは a_processor, b_processor 以下のクラスを必要とする +---+ test # ここから一括…

gitのローカルリポジトリからお目当のタグを抽出する

今日は時間がないので渾身かも、と思ったコードに数行コメントつけてPOST! シェルは便利なんだけどシェルの結果の文字列を気軽に処理したい時、ruby書いたことある人にとってはrubyがとても楽 rubyだとシェルのコマンドを %x( command ) などで実行できる ru…

Rubyのgemをインストールしている際に他のライブラリのインストールを要求してくるnative extensionとは何者か

stackoverflow.com gemのnative extenstionは、主にCやC++などで書かれるライブラリを必要とするRubyのコードあたりを指す。 たとえば、mysql2のnative extensionが~と出てきたら、mysql2のgemのコードの一部は、CやC++で書かれたMySQLのクライアントライブ…

rbenvでrubyをバージョンアップする

rbenvでrubyをバージョンアップする場合の手順 # インストール可能なrubyのバージョンの一覧を調べる $ rbenv install -l # rbenvで新しいバージョンを管理できるようにする $ brew update # 何らかのライブラリをアップデート, インストールする前にbrew自…

config/routes.rbのshallow: trueとは

仕事で見てよく分からなかったので調べてみた。 http://qiita.com/kuboon/items/96bbd227f9497ed81f38 resources :groups do resources :users end resources :users group_users GET /groups/:group_id/users(.:format) users#index POST /groups/:group_id…

IO#readlineは$_変数に実行結果を格納しないの?

Effective RubyのKernel#readlineメソッドあたりの記述 では、ここでは何が行われているのだろうか。このコードは、readlineメソッドから始まっている。より厳密に言えば、Kernel#readlineメソッドだ(項目6ではたとえばここでRubyがKernelモジュールのreadli…