ページ

2012年10月21日日曜日

SinatraでAsset Pipeline

Padrino::Sprocketsを使う。

最初rubygems.orgに公開されているバージョンを使ったら動かなくてハマった。githubから持ってきて使う。

Gemfileに以下を書く
gem 'padrino-sprockets', :git => "https://github.com/nightsailer/padrino-sprockets.git", :require => "padrino/sprockets"

app.rb的なところでregisterする
class App < Sinatra::Base
  register Padrino::Sprockets
  sprockets

  get "/" do
    slim :"index"
  end
end

これで、下のパスに対応するファイルを置けば良い。
app/assets/javascripts
app/assets/images
app/assets/stylesheets

そうすると、 /assets/application.js に対しては
app/assets/javascripts/application.js
app/assets/javascripts/application.js.coffee
app/assets/javascripts/application.js.erb

とかを探してくれるようになる。

appとかassetsの部分は変えられるようだ。

参考:
SinatraとCoffeeScriptでわかる、Sprocketsの使い方 « blog.udzura.jp
nightsailer/padrino-sprockets

2012年10月16日火曜日

gemで実行ファイルがインストールされなくてハマった

ざくにく定食: BundlerでGem作って公開、アップデートまで
で書いたような、Bundlerで生成したファイルの中から必要な分だけを既存のディレクトリに突っ込んで、rake build とrake installしてもbin以下にある実行ファイルがコマンドとしてインストールされなかった。

散々悩んだが、gemspecを見ていて原因がわかった。
gem.files = `git ls-files`.split($\)
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
git ls-filesの結果を使っているが、bin以下をまだgit addしていなかった。
git addしてから改めてやってみたらいけた。

BundlerでGem作って公開、アップデートまで

% bundle gem mygem
で、スケルトンが生成される。
--bin もしくは -b をつけるとbin以下も生成される。

mygem.gemspecを編集してTODOになってるとことか書く。
依存するgemとかも書く。

ビルド
% rake build

インストール
% rake install

そしてリリース
% rake release

リリースすると、バージョン番号でタグを打ち、リモートリポジトリにpushして、rubygems.orgの公開までやってくれる。

アップデートするときはlib/mygem/version.rbを書き換えてrake release。

参考:bundlerを使ってrubygem「Tupper」を作る | Kwappa研究開発室
Bundlerを使ったGem作成メモ (自分用) - ただのにっき(2012-02-18)