[Ruby]ローカルのgemをGemfileに書いてbundle installするのにハマった件
知ってる人にとってはなんだそんなことでという内容なんですが、インストールしたいgemの最新版がリポジトリにない場合にどうやってインストールするかという話です。
AmazonのAPIを簡単に扱えるライブラリであるruby-aawsはリポジトリにあるのはバージョンが0.7.0で、公式サイトからダウンロード出来る最新版は0.8.1が最新版です。
一番簡単なやり方はライブラリをダウンロードしてきて、フォルダに突っ込んでgem installする時に–localオプションつければいいと思うんですが、Herokuに上げたかったのでこのやり方はできません。
HerokuではGemfileに書いたgemをインストールしてくれるので、どうしてもGemfileで完結させたかったのですが、そこでちょっとハマったので手順をまとめておきます。
まず、公式サイトからgemファイルをダウンロードしてきてunpackします。
すると、解凍されたみたいにディレクトリといくつかのファイルが生成されます。次にGemfileを書きます。
gem “ruby-aaws”, “=0.8.1”, :path => “ruby-aaws-0.8.1”
ここで、“=0.8.1”のように必ずバージョンを指定しないと下記のようなメッセージが出てbundle installでこけます。どうやら.gemspecファイルがない時はバージョン指定は必須のようです。
Source does not contain any versions of ‘ruby-aaws (>= 0)’
以上で準備OK。これでbundle installすればインストール完了です。
Installing ruby-aaws (0.8.1) from source at ruby-aaws-0.8.1
Using bundler (1.0.15)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
これでHerokuに上げられる。。。