第18回ベイサイドRuby on Rails勉強会@マスマスに参加しました

第18回ベイサイドRuby on Rails勉強会

3/23(水)に第18回ベイサイドRuby on Rails勉強会@マスマスに参加しました。今回は6名の参加でした。

挙がった話題などを覚えてる範囲でまとめておきます。

CompassでのCSSスプライト

Compassでは簡単にCSSスプライトが可能です。ただ、GIFは対応していなくて、PNGにしないといけません。

RailsGuidesの「Rails アプリケーションのデバッグ」

RailsGuidesのデバッグのセクションには、かなり便利なデバッグ方法がたくさん載っています。

ですが、このセクションは最近のスタンダードであるpryではなく、byebugをしています。

ただ、コマンド名などは違いますが、同じ使い方ができるため、一度読んでみるのをおすすめします。

たとえば、

1
2
3
4
5
6
7
8
9
10
(byebug) where
--> #0  ArticlesController.index
      at /PathTo/project/test_app/app/controllers/articles_controller.rb:8
    #1  ActionController::ImplicitRender.send_action(method#String, *args#Array)
      at /PathToGems/actionpack-5.0.0/lib/action_controller/metal/implicit_render.rb:4
    #2  AbstractController::Base.process_action(action#NilClass, *args#Array)
      at /PathToGems/actionpack-5.0.0/lib/abstract_controller/base.rb:189
    #3  ActionController::Rendering.process_action(action#NilClass, *args#NilClass)
      at /PathToGems/actionpack-5.0.0/lib/action_controller/metal/rendering.rb:10
...

whereで、backtraceを表示できます。呼び出してる元がわかります。
ここで、frame 2などのようにすると、特定のコンテキストに移動できます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(byebug) frame 2

[184, 193] in /PathToGems/actionpack-5.0.0/lib/abstract_controller/base.rb
   184:       # is the intended way to override action dispatching.
   185:       #
   186:       # Notice that the first argument is the method to be dispatched
   187:       # which is *not* necessarily the same as the action name.
   188:       def process_action(method_name, *args)
=> 189:         send_action(method_name, *args)
   190:       end
   191:
   192:       # Actually call the method associated with the action. Override
   193:       # this method if you wish to change how action methods are called,

(byebug)

displayにて変数をウォッチしておくことができます。ステップ実行しながら、変更があった場合にすぐにわかります。

1
2
(byebug) display @articles
1: @articles = nil

breakでブレークポイントを設定できます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[4, 13] in /PathTo/project/app/controllers/articles_controller.rb
    4:   # GET /articles
    5:   # GET /articles.json
    6:   def index
    7:     @articles = Article.find_recent
    8:
=>  9:     respond_to do |format|
   10:       format.html # index.html.erb
   11:       format.json { render json: @articles }
   12:     end
   13:   end

(byebug) break 11
Created breakpoint 1 at /PathTo/project/app/controllers/articles_controller.rb:11

これが非常に便利で、コードのいろんなところにbyebug(pryでいうbinding.pry)を書く必要がなくなります。これは、webrickを落とすまで有効になっています。

さらに、これが便利なのは、クラス名やファイル名と行数で指定できるので、GEMの中などにも設定することが可能です。

今までGemにわざわざbinding.pryを書いて汚していました。

Verilogという言語

デジタル回路の設計用の言語。これを焼く(コンパイルみたいな)ことで、物理的な回路ができるらしい。

Verilog - Wikipedia

さいごに

こんな感じで、Bayside Rails勉強会では、Rails以外の話題もたくさんでてきます。どなたでも参加可能です。

ご興味あるかたは、当ブログの問い合わせフォームから連絡いただければ次回のご案内をお送りさせていただきます。

羊毛や小麦