ruby/railsでオフライン環境を整える – p0t にある方法を REE(Ruby Enterprise Edition) 20090610 版で試してみた。
前提として、REE は /opt/local/ruby-enterprise-1.8.6-20090610/ にインストールされていて、/opt/ruby にシンボリックリンクをはっている。通常のユーザのパスは /opt/local/bin/ruby が最優先になっている。
まずは Ruby。基本的に p0ts さんの方法でよいが念のためというか、そのままオンラインになることも多いので localhost からのみ接続を許可するようにした。
<VirtualHost * *:443>
ServerName ruby
DocumentRoot “/Users/naoya/w/help/ruby-man-html”ErrorLog “logs/ruby-error_log”
CustomLog “logs/ruby-access_log” combined<Location />
Order Deny,Allow
Allow from 127.0.0.1
Deny from All
</Location>
</VirtualHost>
次に gem server は、p0t さんの方法と同じだけど、mislav-hanna は github の rubygems にあるので、次のコマンドでインストールする。
$ sudo gem install mislav-hanna –source http://gems.github.com
ただし、rdoc 2.4 でなく、2.3 を必要するので、rdoc を本家からダウンロードしてインストールする。
$ wget http://rubyforge.org/frs/download.php/50957/rdoc-2.3.0.gem
$ sudo gem install -f rdoc-2.3.0.gem
$ /opt/ruby/bin/rdoc –version
rdoc 2.3.0
そして、hanna テンプレートの設定は root ユーザの .gemrc を変更した。理由は、ローカルに rubygems リポジトリのミラーが作ってあるから。
$ sudo vi ~root/.gemrc
rdoc: –inline-source –line-numbers –format=html –template=hanna
gem: –backtrace –source http://rubygems/
rdoc を再生成する。
$ sudo gem rdoc –all –no-ri
…
Installing RDoc documentation for merb-slices-1.0.11…
Installing RDoc documentation for actionmailer-2.0.2…
Installing RDoc documentation for memcached-0.14…
error while writing to #<File:classes/Rlibmemcached/MemcachedSt.html>
ERROR: While executing gem … (NoMethodError)
private method `sub’ called for nil:NilClass
ちょっとエラーが出ているが気にしない方向で。。。
gems もローカルからのみ接続許可する。インクリメンタル検索がかなりよさげ。
<VirtualHost * *:443>
ServerName gems
DocumentRoot “/Users/naoya/prj/htdocs/sinatra-rubygems/public”<Directory /Users/naoya/prj/htdocs/sinatra-rubygems/public*>
Allow from All
</Directory>ErrorLog “logs/gems-error_log”
CustomLog “logs/gems-access_log” combined<Location />
Order Deny,Allow
Allow from 127.0.0.1
Deny from All
</Location>
</VirtualHost>
最後に gem ミラーを作る。まず、builder が必要なのでインストールする。
$ sudo /opt/ruby/bin/gem install builder
そして、設定ファイルを記述する。gem のミラーには時間がかかる。
$ sudo vi ~root/.gemmirrorrc
—
- from: http://gems.rubyforge.org
to: /opt/rubygems/rubyforge/$ sudo mkdir /opt/rubygems
$ sudo /opt/ruby/bin/gem mirror && sudo gem generate_index -d /opt/rubygems
github の rubygems もミラーしようとしたがエラーが出てしまいうまくいかなかった。
$ sudo vi ~root/.gemmirrorrc
—
#- from: http://gems.github.com/
# to: /opt/rubygems/github/
- from: http://gems.rubyforge.org
to: /opt/rubygems/rubyforge/$ sudo /opt/ruby/bin/gem mirror
fetching: http://gems.github.com//Marshal.4.8.Z
ERROR: While executing gem … (ArgumentError)
comparison of String with 3 failed
よし、これで環境が整ったはずなので、いつでもオフライン環境になれる。
Tags: ruby rubygems







gemのミラーって素敵ですね!
さっそくのコメント、あざす!