LoginSignup
9
9

More than 5 years have passed since last update.

PadrinoでBowerを使う

Posted at

RailsプロジェクトにBowerを導入してHerokuへデプロイする」という素晴らしい記事を見て、PadrinoでもBowerでアセット(画像とかCSSファイルとかJavaScriptファイルとか)を管理してみようと思いました。

苦労もしたので、書き留めておきます。

プラン

Padrino::Sprocketsを使うことにします。やっていることは簡単なので自分で書いてもいいくらいなのですが、書いたものをどこに置けばいいのか?という決断をする決断リソースがもったいないので、gemに頼っちゃいます。

パスの決定

URI上のパスは、/assets以下で、アセットを提供することにします。

ファイルシステム上では、/app/assets以下をアセットとして提供して、Bowerで入れるコンポーネントは/app/assets/componentsにインストールすることにします。
Padrino::SproketsのデフォルトはPadrino.root直下の

  • /assets/images
  • /assets/javascripts
  • /assets/stylesheets

にアセットを置くようになっていますが、折角Padrinoがデフォルトで/app/assetsをアセット置き場にしているので、そちらを使います。

最初はpublic以下にBowerのアセットをインストールしようと思ったのですが、READMEなんかのアセットとは関係ないファイルも見えるようになってしまうのと、階層が深くなてしまうのを嫌って、例えCoffeeScriptやSCSSのコンパイルがなくても、Sprocketsを通すようにしました。

アセットのインストール

Bowerを使ってアセットをインストールします。

bower.json
{
  "name": "bibid",
  "dependencies": {
    "bibi": "git://github.com/satorumurmur/bibi"
  }
}
.bowerrc
{
  "directory": "app/assets/components"
}
$ bower install

で、app/assets/components以下にアセットが入ります。

RubyGemsのインストール

必要なgemをインストールします。

Gemfile
# :
gem 'padrino-sprockets', :require => 'padrino/sprockets'
$ bundle install --path=deps

アプリケーションの設定

Padrino::Sprocketsの設定をします。

app/app.rb
module Bibid
  class App < Padrino::Application
    # :
    # :

    register Padrino::Sprockets
    sprockets url:   'assets',
              root:  Padrino.root('app'),
              paths: %w[assets/components]

    # :
    # :

これで、例えばhttp://localhost:3000/assets/bibi/bib/i.jsにアクセスすると、ちゃんとJavaScriptが表示されます。


なんか、書いてみると、簡単ですね、色々設定弄ったリソース読んだりして苦労したんですが……。

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9