ruby
イントロ Headless Chrome で system test を書いていたら、猛烈にハマったので記録を残しておく。 ハマりすぎて Capybara のコードを殆ど読んでしまったので、 読んだ内容を抜粋してまとめてみました。 若干冗長なのはお許し下さい。 環境 rails (5.1.4) ca…
イントロ 今更だけどハマったので書いておく。 I, [2017-11-15T17:45:38.423986 #7537] INFO -- : executing ["/var/www/app/releases/20171115083608/vendor/bundle/ruby/2.4.0/bin/unicorn", "-c", "/var/www/ser val/current/config/unicorn.rb", "-E", "…
イントロ 最近 Wercker を使っています。 Wercker でも CircleCI と同じように build を行う API があるのですが、どうしても build の API が叩けなくてハマったのでメモ。 現象 build API を使って build を行うと、Invalid stack というエラーが出る。 エ…
イントロ お仕事用 Mac が Mac book pro に変わってしまった。 環境構築をやるのも久々だったのだけれども、dotfiles のボリュームが増えたのと、実はコード化出来ていない部分が多かったりして、かなり面倒だった。 ちゃんともう一度やり直そう、と思って選…
イントロ rails5 の主要機能は色々と知られている通りだけど、業務に投入するとなると、やっぱり互換性だったり、細かいコードの違いが気になるもの。 今回 authlogic を使ったログイン機能を雑に作ったので、その限られた狭い範囲であるものの、ハマったと…
イントロ # 似ているメソッドで、微妙に挙動が異なり、ちょっとハマったのでメモ 違い 引数、結果をキャッシュするかどうかが違う 引数 ActiveRecord::Base.connection#table_exists? 引数を一つ取る ActiveRecord::Base.connection.table_exists?("users") …
イントロ collectiveidea/delayed_job なんとなく使ってきて、なんとなくわかってるつもりの delayed_job について、改めてまとめてみたもの。 休日暇だったのでソースコード読んでみたり、step 実行したりして、何処に何が書いてあるかをざっくりとまとめた…
イントロ authlogic でハマったネタ第二弾。 まとめると以下の様な感じ。 authlogic でログインユーザーを作成 よくある 名前と password で認証するユーザー ログインユーザーを編集する画面を作る password を編集可能にする ログインユーザーの password …
イントロ 情報が古いけど ruby on rails - changing password with authlogic - validation not catching blank inputs - Stack Overflow と同じ現象。 改めてまとめると、以下の様な状態。 authlogic でログインユーザーを作成 ログインユーザーは password…
イントロ タイトルの通り。Capybara::Poltergest の目玉機能である remote debugging がうまく動作しなくて、色々試行錯誤した話。 https://github.com/teampoltergeist/poltergeist#remote-debugging-experimental 環境 OSX 10.10.3 phantomjs 2.2.0 polter…
イントロ まぁ半分ネタも入ってますが、何かちょっとした事を行う程度なら役に立つはず。 mgi166/embulk-filter-eval これは何が便利? input として与えられたカラムに対して、Ruby のコードでちょっとした変換を加える事ができる embulk プラグインです。 …
イントロ 今使ってる rbenv の plugin たち。 rbenv はこういうエコシステムが便利だから使い続けている。 最近務めている会社では流行りのようなので、私もやってみる。 plugins % l .rbenv/plugins/ rbenv-ctags rbenv-default-gems rbenv-gemset rbenv-up…
イントロ よく設定ファイルで見るクラスを簡単に作れる module ActiveSupport::Configurable の紹介 使い方は、rails/configurable.rb at master · rails/rails のコメント文を読んだほうが早い。 よくあるやつ 具体例を幾つか紹介。 引数が違ったり、ブロッ…
イントロ 毎度おなじみ ruby-build ですが、入れることができる ruby の version と rubygems の version は制限があります。 とはいえ普通に ruby を使う分には、提供されているもので何の問題も無いのですが。 rbenv を使って、ちょっとマニアックな ruby …
結論 定数に class クラスのオブジェクトを代入すると、(ruby で一般的な) class として扱われる module or class の配下にネストして class を作る場合、その class が持つ定数として定義する class.new する際に引数として、class クラスのオブジェクトを…
イントロ 弊社の凄腕エンジニアが、タイトルに書いてあることを言いながらメンバーに出してくれた問題です。 もちろん私は 90 % 側ですた。 問題 以下の出力結果はどうなるでしょう? p { :a => 1, :b => 2 } Hash が出力されて Hash が返る、と思ったあなた…
結論 クラスインスタンス変数として扱われるっぽいです。 class Klass attr_accessor :hoge def self.hoge(hoge) @hoge ||= hoge end end # @hoge に値が入る Klass.hoge('hoge') #=> "hoge" # もう既に @hoge には値が入っているので、'fuga' は入らない Kl…
イントロ これに気づかなくて結構ハマった。 症状 berkshelf を使って、cookbook を install するとき、bundler 風に以下のように path を変えた。 berks install --path vendor/cookbooks すると cookbook が見つからないと怒られ始めた。 ================…
イントロ chef で環境構築したはいいものの、ruby の install は意外と手間だったりします。 できれば rbenv のようなものを使って、色々な ruby のバージョンを試せる方がいいですよね。 ところが肝心の rbenv を install するレシピの自作は結構シンドい。…
イントロ タイトルの通り。今までは面倒臭がって全部レシピを書いていたけれど、Berkshelf 使えば、その手間すら省けると聞いたので使ってみました。 ところで Berkshelf は何も考えないと vagrant-berkshelf という Vagrant のプラグインを経由して berkshe…
方法 SingleForwardable を使う require 'forwardable' class MyFile extend SingleForwardable def_delegator File, :join end MyFile.join('hoge', 'fuga') #=> "hoge/fuga" MyFile のクラスメソッドとして File#join っぽい挙動をするメソッドを委譲 別の…
イントロ クリスマスネタ。職場のある日常。 時期が時期だし、クリスマスネタを盛り込んだ rails アプリを作成しようと思い立った。 その名も「santa」という名前のアプリ。(ひねり無し) ’santa’ という文字列を与えて、そこからクラスを作成するときに起き…
時々コードで見かけるので。 標準出力と関連づいているなら true crontab から実行された場合は false パイプでつなげたりして、出力される場合は false 参考 Class: IO (Ruby 2.0.0) Check if Your Ruby Script is in a Pipe
イントロ veewee じゃなくて packer 触ってみた話。今だからこそ veewee のおさらい 何故タイトルのようなことを思うかと言うと 「veewee」で作られたテンプレートが、ありとあらゆる地雷を潜り抜けて作られた物だから です。 私は基本的にpacker の公式を読…
イントロ 何かと便利な html parser の説明。 自分用の忘備録も兼ねて逆引きっぽく書いてみるテスト。 主な使用法 Hpricot.parse(Hpricot() でも良い) メソッドの引数に、parse したい html を与える。 search or at メソッドに「検索したい条件」を引数に与…
イントロ 最初理解するのが難しかったけど、ようやく理解できた気がするので書いてみるメモ。 お題は Enumerator と Generator について。 新しさ皆無の n番煎じです。 Generator class Generator Generator は、後で出てくる Enumerator と同じようなことを…
症状 NoMethodError in 'App::Client hoge' undefined method `its' for #<ActiveSupport::TestCase::Subclass_1::Subclass_2:0x1035bc058> 初めてエラー見たとき ( ゚д゚)!? ってなってしまったのでメモ。 解決法 it の中に its が入っているので、消す。 一旦気づくと当たり前なんですけどね。初心者あるあるってことで。 b</activesupport::testcase::subclass_1::subclass_2:0x1035bc058>…
始めは rspec 本を読んだり、テストコードを読んだりしたんですが、全く自分で書けるようにはならなかったんですよね(当たり前ですが)。 なんとなく読めるようにはなったけれど。 そこで「テスト読める」から「テスト書ける」の思考ギャップを埋めるための t…
each の中とかで、いきなり h["1"]["2"] = 2 とかやりたいときの話。 Hash.new して上記のようなことをやろうとすると、エラーになってしまう。 rakkyooの備忘録 では以下のような書き方があるよーと紹介されている。 # 2次元ハッシュの初期化 h = Hash.new …
前準備 公式サイトの通りにやって問題なかった rbenv をインストールする ruby-build をインストールする homebrew をインストールする やってみたこと 実は ruby-build では、rubyのversionの古いものが install できなかった。(1.9.3はrbenv-buildでインス…