読者です 読者をやめる 読者になる 読者になる

padrino-helpersでasset folderの名前を変えたい

development環境の場合、sinatra-assetpack で指定したjsやcss/js/application.js /css/application.cssでサーブされるのに、padrino-helpersのjavascript_include_tagなどで追加したものは /javascripts/foo.js/stylesheets/bar.cssになる。

なんか気持ち悪いので統一したいなと調べてみたら変更出来るオプションがあった。

set :css_asset_folder, 'css'
set :js_asset_folder, 'js'

ref. https://github.com/padrino/padrino-framework/pull/1528

そもそもなぜこんなことに?って話なんだけど、

  • 素のSinatraで書き始める
  • ページャに Kaminari を使おう!
  • kaminari/sinatra が padrino-helpers に依存しているから入れる
  • sinatra-contribのcontent_for が padrino-helpers の content_for に上書き(?)される
  • HTMLがエスケープされるようになってjs/cssが読み込まれない
  • しょうがないので include_tag を使う
  • あ、あれ、フォルダ名が・・・

という経緯。padrino-assetsというのもあるみたいだし、初めからPadrinoで作れば幸せだったかもしれない。

ちなみにsinatra-assetpackの方でも

serve '/javascripts', :from => 'assets/javascripts'
js :application, [
  '/javascripts/foo.js',
]

のように変えることは出来たけど、/javascriptsより/jsの方が好きなので。

参考

Guides Application Helpers - Padrino Ruby Web Framework

Sinatra Recipes - Asset Management - Sinatra Assetpack