tyoshikawa1106のブログ

- Force.com Developer Blog -

Rails:Asset PipelineとPreCompile

ローカル環境である程度動くRailsアプリができたので、HerokuにデプロイしてみるとCSSなどが読み込まれませんでした。そのとき調べてみて「config.assets.compile = false」を「true」に変更することで読み込まれるようになることがわかりました。

f:id:tyoshikawa1106:20150902140609p:plain


この「config.assets.compile」ですが、動的にPreCompileをしてくれるオプションとのことで、Herokuなどの本番環境で動かすときは、「false」にして自分でPreCompileする方がいいみたいです。


PreCompileは次のコマンドで実行できます。

$ rake assets:precompile

f:id:tyoshikawa1106:20150902141007p:plain


このコマンドを実行するとpublicフォルダ内に実行結果のファイルが作成されるみたいです。
f:id:tyoshikawa1106:20150902141221p:plain


また、precompileの対象となるファイルはこんな感じで指定する必要があるみたいです。

# Do not fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = false
config.assets.precompile += %w( sample.js )

1つ1つ指定するのは大変なのでこんな書き方もできるそうです。

config.assets.precompile += %w( *.js *.css *.less *.erb )


ちょっとまだよくわかっていないところもあるので、とりあえずこんな感じの仕組みがある...ということで。。。Railsの勉強用なら「config.assets.compile = true」でもとりあえず大丈夫かなと思います。


あと、「rake assets:precompile」コマンドを実行したタイミングだと思うのですが、次の隠しファイルが作成されていました。
f:id:tyoshikawa1106:20150902143147p:plain


この.sprockets-manifest-xxx.jsonというので読み込みファイルを管理しているみたいです。後から「config.assets.compile = true」に戻すときはこのファイルを削除しておく必要がありました。

参考サイト