GAE/J で Rails アプリを開発するとき、GAE/J 上にアップロードできるファイル数の制限の関係から、
なんとかしてファイル数を減らしたくなります。
そこで、有効なのが、使用する rubygems を jar ファイルの中にまとめてしまうこと。
JRuby から jar ファイル内の rubygems を読み込むにはちょっと苦労するのですが、
JRuby on Rails on GAE/J では、簡単に読み込むことができます。
- JRuby on Rails on GAE/J では、RAILS_ROOT/vendor/gems にある rubygems require “gem-name” すればロードできる
- ただ、vendor/gems に直接放り込むとファイル数がかさんで、アップロード可能なファイル数の制限に引っかかることがある
- JRuby on Rails on GAE/J では、jar 内にある rubygems もロードできる
- jar ファイルに、rubygems をまとめればいい
手順
- gem を指定したディレクトリにインストール
- -i オプションを使い、一時ディレクトリにインストール
- –no-rdoc, –no-ri オプションを使い、不要な rdoc, ri をインストールしないことで容量を節約
- jar コマンドで一時ディレクトリにある gem を jar ファイルにまとめる
- RAILS_ROOT/config/environment.rb に require “installed-gem.jar” を追加する
以下、scrapi を jar ファイル内にまとめて使えるようにする例
% cd RAILS_ROOT % cd lib/ % jgem search -r scrapi *** REMOTE GEMS *** assaf-scrapi (1.2.1) scrapi (1.2.0) scrapin-a-livin (0.1.1) % jgem install -i scrapi-tmp scrapi --no-rdoc --no-ri Successfully installed tidy-1.1.2 Successfully installed scrapi-1.2.0 2 gems installed % cd scrapi-tmp/ % ls cache doc gems specifications % ls gems/ scrapi-1.2.0 tidy-1.1.2 % ls specifications/ scrapi-1.2.0.gemspec tidy-1.1.2.gemspec % jar cf ../scrapi-1.2.0.jar gems/ specifications/ % cd .. % ls ... scrapi-1.2.0.jar ... % rm -rf scrapi-tmp/ % cd ..
以下を config/environment.rb に追加
require 'lib/scrapi-1.2.0.jar'
ただ、dev_appserver.sh や、appspot.com 上ではこれで rubygems が読み込まれるのですが、
jruby -S で実行した場合、rubygems はロードされないので注意。
普通の、jruby でこの jar ファイル内の scrapi を読み込むには以下の方法しか思いつきませんでした・・・。
require "file:///path/to/rubygems/scrapi-1.2.0.jar!gems/scrapi-1.2.0/lib/scrapi"
もっと、いい方法がありそう。
Related posts:
- [Rails] ActiveRecord で DateTime を使う ActiveRecord の :datetime は ruby Time class に対応してるんだけど、 ruby の...
- らき☆すた on Rails 数ヶ月前のことになりますが、社内 IRC でリンクが送られてきました。なんだろうと思ってクリックしてみると・・・。 な!?サンプルコードにらき☆すたw Rails を身近に感じた夜でした。中の人とは良いお友達になれそうで [...]...
- Google App Engine 上の JRuby でメールを受信する方法 以下の組み合わせで動作を確認しています jruby-1.4.0 rails 2.3.2 appengine-java-sdk-1.3.0.zip appengine-apis-0.0.11.jar (0.0.12 でも [...]...
Related posts brought to you by Yet Another Related Posts Plugin.


English
Japanese
記事
コメント