再開したい
気づいたら1年放置してた。。
手元のメモ帳に書いて捨てるくせがなかなか消えないなー
Asset PipelineのPreCompile対象とその設定
いつも忘れては調べて思い出して。。を繰り返していたのでいいかげん覚えようと思ってメモっておく
- precompile対象のファイル
デフォルトでは
JS:
app/assets/application.js
CSS:
app/assets/application.css
となっている。
つまり、デフォルトの設定は、アプリケーションでjs,css共に1ファイルになるべきという考え方になっていて
どの画面でもコンパイル後のapplication.js,application.cssで動くようにしないといけない。
( // require_tree . がついてるので、コントローラー毎のJSを1ファイルに結合して使用する形になる)
気をつけないといけないのが、特定の画面で、特定のJSだけを読み込もうとして
<%= javascript_include_tag params[:controller] %>
みたいに書いていた場合、
production環境で実行すると、下記のようなエラーが発生して、レンダリングすら行われない
ActionView::Template::Error (XXXXXXX.js isn't precompiled): 40: <!-- Javascripts 41: ================================================== --> 42: <!-- Placed at the end of the document so the pages load faster --> 43: <%= javascript_include_tag params[:controller] %> 44: </body> 45: </html>
前述の通り、コンパイルされるのは、application.jsだけなので、production環境では、ファイルが見つからずエラーになる。
- precompile対象の設定
設定を追加することで、precompile対象を追加することができる
/config/enviroments/production.rb内の
config.assets.precompile
に追加でおk。
基本的には、JSは1ファイルにまとめても動くように作って、必要に応じて追加するのがよいのかな。
管理画面用のJSは別で切り出すとかありそうだし。
homebrewで入れたruby-buildを最新にする
brew upgrade --HEAD ruby-build
でokでした。
ふと brew update してみたら、gitのコンフリクト起きてたのですが見なかったことにしました。
(また今度時間あるときに解決する。。)
irbでRSpecのmatcherを試す
irb内でさくっと試したくなったので。
require 'rspec' include Rspec::matchers true.should be_true
Mockを試す場合は
require 'rspec/mocks/standalone'
Gemfile.lockをバージョン管理すべきか
http://langturn.com/translations/33?locale=ja
bundlerの作者によると
・gem開発時にはいらない
・アプリ開発時には必要
ということらしい。
bundle installを実行することで、Gemfile.lockが生成され、そのファイルを配布することで
どの環境でも同じgemの依存環境が再現できる。という内容。
現在の僕の運用だと、Gemfile.lockは毎回生成したのだけど、あまりおすすめされない方法らしい。
理由は、developmentでしか必要ないgemをproduction環境に入れたくなかったから。(rspecとかsqliteとか)
デプロイするたびに、
bundle install --without development test
してたのだけど、どうしようかなぁ。