【Gem】【Rails】RubyGemsにあるcarrierwaveをインストールすると最新バージョンなのに古い内容になってしまう
はじめに
Webサービスを開発していて、ハマったところなのでメモ。
環境
- OS X El capitan
- Ruby 2.3.0
- carrierwave 0.11.2
- fog 1.38.0
- Ruby on Rails 4.2.4
詳細
Amazon S3に対して、画像アップロード機能を作成したかったため
「carrierwave」を追加しました。
バリデーションエラーがなければ、指定したディレクトリに画像がアップロードされ
問題なかったのですが、バリデーションに引っかかった場合、画像が消えないように
一時ディレクトリに格納されるようにしていました。
しかし、画像が格納されず機能が実装されていない?と思い、ライブラリを調査しました。
コードに機能が実装されているか確認
GitHubに公開されているので、ソースを確認します。
途中、調査していたところ、0.10でAmazon S3に一時的にファイルが
アップロードされるようになったようなので機能はありそうです
バージョンの確認
bundle installした際に古いライブラリがインストールされている可能性があるため
アンインストールして、再度実行する。
...中略... Installing carrierwave 0.11.2 ...中略...
RubyGemsのサイトを見に行くと0.11.2が最新っぽいので大丈夫そうです。
carrierwave | RubyGems.org | your community gem host
ここまでやっても解決しません。
インストールされたライブラリを確認
実装したロジックがおかしいのかな?と考え、1つ1つ確認したところ問題なし。
そして、せっかくRubyMineを使っているのでIDEから該当箇所のロジックが
ないかどうかを確認しました。
確認したところ、追加されたロジックに関する内容がすべてありませんでした。
バージョンは確かに0.11.2というのに。
解決策
Gemfile
gem 'carrierwave'
上記の記述を以下のように修正
gem 'carrierwave', github: 'carrierwaveuploader/carrierwave'
ライブラリを直接GitHubから取ってくるようにしました。
Install carrierwave 0.11.0 from git://github.com/carrierwaveuploader/carrierwave.git (at master@b31f7ce)
原因
原因を探ろうと思ったのですが、検討がつかず時間が経ってしまったので
一旦前に進むようにします。謎すぎる。。。