2009-06-11
Ruby 1.9.1で $HOME/.gem/ruby/1.9.1 以下のGemパッケージを使う方法
Rubygems |
正しい方法かは知らないけど、とりあえず使うために頑張ってみる。
require "rubygems/custom_require" をする
デフォルトでKernel.#requireを上書きするとかそんなことをやらないようにか、rubygems.rb内で、RUBY_VERSIONが1.9以上の場合はrubygems/custom_requireを読まないようになっています。なのでこいつを明示的に読むようにしてやれば一応は動きます。
Kernel#gem を使う
詳しくはinstance method Kernel#gem辺りを参照。
指定された Gem をロードする前にその Gem が必要とする Gem をロードします。バージョン情報を省略した場合は、最も高いバージョンの Gem をロードします。指定された Gem やその Gem が必要とする Gem が見つからなかった場合は Gem::LoadError が発生します。
instance method Kernel#gem
ただ、るりまには上のように書いてあるのですが、バージョン情報を省略したらGem::LoadErrorが発生しました。仕方がないので最新バージョンの Gem をロードするためにひと手間かけました。
spec = Gem.searcher.find "hoge" # "hoge"に使用する Gem の名前を指定する gem spec.name, "= #{spec.version}" require spec.name
やっている事は rubygems/custom_require でやっていることと変わりありません。Gem.activateを使うかKernel#gemを使うかの違い。
Gem::QuickLoader.load_full_rubygems_library を使う方法
これはRuby 1.8.x以下でrequire "rubygems"としたのと全く同じ状態になるもの、だと思う。
多分各々が呼ぶべきものではないと思うのだけど、Ruby 1.9.1のソース内を探索していたらこんなものを見つけたので、せっかくなので使ってみる。
2009-06-05
Rubygemsパッケージとか $HOME/.gem 以下にインストールするだろjk
Rubygems |
/usr/bin/* を勝手に荒らされるという話。
ヽ( ・∀・)ノくまくまー(2009-06-04)
Rubygems 1.3.0から Gem.user_dir というメソッドが追加されていて、gemコマンドでインストールされるディレクトリにデフォルトで $HOME/.gem 以下も追加してくれています。しかもこれ、Rubyの処理系ごと(1.8.x,1.9.x,JRuby等)にディレクトリを分けてくれます。
例えば1.8.xの場合
1.9.xの場合
JRubyの場合
となります。
ただ、JRubyに--1.9オプションを付けてgemを実行しても、 $HOME/.gem/jruby/1.8 になってしまう問題はあります。Rubygemsはバージョン指定の部分はRbConfig::CONFIG['ruby_version']を取って指定しているだけなので、1.9.1でなくて1.8を返しているJRuby側の問題っぽいです。
デフォルト以外の場所にインストールする場合、環境変数GEM_HOMEを指定しちゃう方法が一番有名かもしれません。
たぶん、環境変数 GEM_HOME をローカルのどこかに設定してユーザー権限で gem install すればうまくいくんじゃないでしょか。
Rubygems に /usr/bin を触らせないためには gem をユーザーディレクトリで運用する++ - きたももんががきたん。
これだと1.8.xだろうが1.9.xだろうがJRubyだろうが同じディレクトリのgemを参照することになり、なんとも気持ち悪いことになってしまいます。単一処理系しか動かさないのなら問題はありませんが、複数処理系を動かす場合問題が起きてしまうことがあります。
なので僕は基本GEM_HOMEも何も設定せずにユーザ権限で gem install するようにしています。ただ、この場合、処理系の数だけPATHに追加しないといけないので、結構面倒かもしれません。
2007-12-02
RubyGems自身のアップデート
Ruby |
RubyGemsのプロジェクトページを見ていたら、RubyGems自体の.gemパッケージがあった。もしかしたらと思って調べたらgemでRubyGems自身をアップデートできるらしい。
ちなみに自分の環境はWindowsなのですが、基本どのOSも変わりません。
参考:RubyGemsのアップデート - pulscope.ruby
Rubygemsのアップデート
俺の環境では下のコマンドを打ち込んだらエラー出た。このコマンドが何やっているかは不明。ググったけどよく分からない・・・・・・。
キャッシュの削除
source_cacheを削除しないとエラーでる場合があるらしいので削除しとく。C:\直下にインストールしている場合の場所は"C:\ruby\lib\ruby\gem\source_cache"になる。Explorerから削除してもいいけどgemやった直後なので折角だからプロンプトで削除してしまうのが吉。
source_cacheのパスはそれぞれ環境にあわせて読み替えてください。Windowsでプロンプトってあまり使わないからコマンドを忘れてしまう・・・・・・。
rubikitchローカルの文書をアップロードする「はてダラ」を使えばこんな事故は起こりません。
試してみては?
from_kyushuコメントありがとうございます。このようなスクリプトがあるんですね。Ruby移植版があるようですがRuby版はグループのほうは対応していないのは残念です・・・・・・。早速試させていただきます、ありがとうございました。
2007-12-01
RailsによるアジャイルWebアプリケーション開発 第2版 2日目
Rails |
進捗状況
8.3 イテレーションC2(~P97)まで終わった。RadRailsのRakeタスクがなぜか反応しなくなり、しばらく悪戦苦闘した後諦めて別途プロンプトからRakeを実行することに。これで時間をとられてしまったのが惜しかった。本当は第8章 タスクCを全て終わらせる予定だったのに・・・・・・。
補足情報
オーム社のWebサイトから日本語版のソースコードが落とせるのね。わざわざ原著のソースコード見てたよ。
あと、第1版はサポートページがあるのに、第2版はないみたい。正誤表代わりに原著のErrataを見るわけにも行かないし、誤字等がないことを祈るばかりです。
RailsによるアジャイルWebアプリケーション開発 第2版 1日目
Rails |
進捗状況
6.4 イテレーションA4(~P77)まで終わった。イテレーションA3の検証の実装はあまりのシンプルさにちょっと感動した。
疑問
本書ではテストデータを用意するのにマイグレーションを使っているけど、フィクスチャじゃダメなのかな?索引見る限りではdb:fixtures:loadは出てきていないようだけど・・・・・・。こういうテストデータはマイグレーションで用意して、フィクスチャはテスト時のみに使うものなのかな。このまま勉強を進めたら分かりそうだから一時保留。
始めましてのご挨拶
日記 |
初めまして、id:from_kyushuです
プログラム初心者の職業PGです。詳しいプロフィールははてなダイアリーのプロフィールにまとめていますので、そちらをご覧ください。
Rubyビジネスコモンズ及びRBC長崎の会員です。Rubyistに書くのはちょっと違うかなー、と思いますのでこっちではあまり触れることはないかと思います。
この日記について
下記の教本やRuby,Railsを勉強していく上でのメモとして書き残していく予定です。しばらくは本当に勉強メインですが、アプリケーションを開発していく上でのメモなども残せていけるようにしたいなぁ、なんて妄想中。
教本
最近やりはじめました。超わかりやすいです。でも超分厚い。
RailsによるアジャイルWebアプリケーション開発 第2版
- 作者: Dave Thomas,David Heinemeier Hansson,Leon Breedt,Mike Clark,Andreas Schwarz,James Duncan Davidson,Justin Gehtland,前田修吾
- 出版社/メーカー: オーム社
- 発売日: 2007/10/26
- メディア: 大型本
- 購入: 17人 クリック: 273回
- この商品を含むブログ (137件) を見る
以前やっていたのですがちょっと分かりづらい?正誤表と併せてやらないと痛い目に合います。
- 作者: 高橋征義,かずひこ,喜多川豪
- 出版社/メーカー: アスキー
- 発売日: 2006/07/03
- メディア: 大型本
- 購入: 2人 クリック: 53回
- この商品を含むブログ (85件) を見る
ayucat_on_tabelogプロフ拝見させていただきました。お若いですねー。Railsは仕事っぽいことやっていますが、AWDWR 2nd ed.はまだ一度手に取っただけです。まだ学生ということで共通点も多いですね、今後も拝見させていただきます!
from_kyushuコメントありがとうございます。しばらくは勉強のメモ代わりに更新していきますのであまり見所はないかと思いますが、今後もご覧頂ければうれしく思います。
Ruby 1.9.2 (あるいは、1.9.2-preview2) では上記の作業は不要になりますね。