gem update --system
gem install <gem名>
gem update
gem dependency <名前>
(例) rails 2.1.2 が依存する gem を表示
gem dependency rails -v 2.1.2
-v を省略した場合は最新のインストール済み rails が依存する gem が表示されます。
sudo gem install ruby-debug sudo gem install ruby-debug-ide
NetBeans 6.5 では ruby-debug-ide が 0.3.x のみ認識するため、バージョンを指定。
sudo gem install ruby-debug sudo gem install ruby-debug-ide -v 0.3.3
gem install tlsmail
Net::SMTP.enable_tls( OpenSSL::SSL::VERIFY_NONE )
Net::SMTP.start('smtp.gmail.com', 587, 'localhost', 'foo@bar.xxx', 'password', :plain) { |smtp|
smtp.send_mail <<EOF, 'foo@bar.xxx', 'bar@foo.xxx'
From: foo@bar.xxx
To: bar@foo.xxx
Subject: hello
hello world
EOF
}
Net::SMTP.enable_tls( OpenSSL::SSL::VERIFY_NONE )
smtp = Net::SMTP.start('smtp.gmail.com', 587, 'localhost', 'foo@bar.xxx', 'password', :plain)
contents.each { |content|
smtp.ready( 'foo@bar.xxx', 'bar@foo.xxx' ) { |f|
f.puts 'From: foo@bar.xxx'
f.puts 'To: bar@foo.xxx'
f.puts 'Subject: hello'
f.puts
f.puts content
}
}
smtp.finish
ruby 1.9 からは tlsmail を入れなくても、標準で使えるようになるらしい。
(参考) http://d.hatena.ne.jp/zorio/20070318/1174226862
require 'net/http' res = Net::HTTP.get( 'www.xxx.dom', '/index.html' ) puts res.body
require 'net/http'
require 'uri'
Net::HTTP.version_1_2
uri = URI.parse( 'http://host/path?query=parameter' )
Net::HTTP.start( uri.host, uri.port ) {|http|
res = http.get( uri.path + '?' + uri.query )
puts res.body
}
#!/usr/bin/ruby -Ku
require 'net/http'
Net::HTTP.version_1_2
require 'uri'
uri = URI.parse( 'http://host/path?query=parameter' )
http = Net::HTTP.new( uri.host, uri.port )
http.start {
req = Net::HTTP::Get.new( uri.path + "?" + uri.query )
req['User-Agent'] = "ruby script"
res = http.request( req )
puts res.body
}
#!/usr/bin/ruby -Ku
require 'net/http'
require 'net/https'
Net::HTTP.version_1_2
require 'uri'
uri = URI.parse( 'http://host/path?query=parameter' )
http = Net::HTTP.new( uri.host, uri.port )
http.use_ssl = true
http.ca_file = "/opt/local/lib/ruby1.9/gems/1.9.1/gems/rubygems-update-1.3.5/test/public_cert.pem";
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.verify_depth = 5
http.start {
req = Net::HTTP::Get.new( uri.path + "?" + uri.query )
req['User-Agent'] = "ruby script"
res = http.request( req )
puts res.body
}
http.verify_mode = nil
#!/usr/bin/ruby -Ku
require 'net/http'
require 'uri'
uri = URI.parse( 'http://somedomain/path/script' )
Net::HTTP.start( uri.host, uri.port ) { |http|
header = {
'User-Agent' => "ruby script"
}
body = <<CONTENTS
key=value
CONTENTS
res = http.post( uri.path, body, header )
print res.body
}
Net::HTTP::Post を使う
#!/usr/bin/ruby -Ku
require 'net/http'
require 'uri'
uri = URI.parse( 'http://somedomain/path/script )
Net::HTTP.start( uri.host, uri.port ) { |http|
req = Net::HTTP::Post.new( uri.path )
req['User-Agent'] = "ruby script"
req.set_form_data( {:id => "1", :name => "hoge"}, "&" )
res = http.request( req )
# HTTP Status
print "HTTP ";
puts res.http_version
print res.code
print " "
puts res.message
# HTTP Header
puts res["Content-Type"]
p res.body
puts res.body
}
au BufNewFile,BufRead *.rb set tabstop=2 shiftwidth=2
を記述。
~/.vimrc
ホームディレクトリの _vimrc
while data = gets # 行単位処理 end
require 'win32/clipboard' clipboardtext = Win32::Clipboard.data
次の順に gem install
rubyforge から DL して、ローカル(gem install -l)からインストールする場合は次の URL から。
http://rubyforge.org/frs/?group_id=85&release_id=25233
次の URL から環境に合わてモジュールをダウンロード
http://rubyforge.org/frs/?group_id=12&release_id=30561
ruby 1.8.7 で次のエラーが発生。
undefined method `length' for #<Enumerable::Enumerator:0x46b0680>
1.8.7 から String#chars が Enumerable::Enumerator を返すようになったため。
String#chars のかわりに、String#mb_charsを使うことで回避可能。
Rails 1.2.6 の ActionView の truncate メソッドも内部で呼び出しているようなので、その場合は ruby 1.8.6 を使用。
gem update --system
を実行すると、lib\ruby\gem\1.8\cache に rubygems-update-1.3.1.gem がダウンロードされますが、
c:\>gem update --system Updating RubyGems Updating rubygems-update Successfully installed rubygems-update-1.3.1 ERROR: While executing gem ... (NameError) undefined local variable or method `remote_gemspecs' for #<Gem::Commands::UpdateCommand:0x2c77dcc>
というエラーが発生。
そこで続けて update_rubygems を実行。
c:\>update_rubygems
Installing RubyGems 1.3.1
mkdir -p C:/bin/ruby/lib/ruby/site_ruby/1.8
mkdir -p C:/bin/ruby/bin
(中略)
Installing rubygems-1.3.1 rdoc into C:/bin/ruby/lib/ruby/gems/1.8/doc/rubygems-1.3.1/rdoc
(中略)
RubyGems installed the following executables:
C:/bin/ruby/bin/gem
If `gem` was installed by a previous RubyGems installation, you may need
to remove it by hand.
gem のバージョンを確認すると
c:\>gem -v 1.3.1
次の手順が正しいです
gem install rubygems-update update_rubygems
ActiveScriptRuby を使っている場合は gem.bat が
| @“ruby.exe”<color red>“</color> ”%~dpn0“ %* |
とタブルクォートが余分についてしまうので、次のように削除しておきましょう。
@"ruby.exe" "%~dpn0" %*
次のエラーが発生
Building native extensions. This could take a while...
ERROR: Error installing sqlite3-ruby:
ERROR: Failed to build gem native extension.
"c:/Program Files/ruby-1.8/bin/ruby.exe" extconf.rb install sqlite3-ruby
checking for fdatasync() in rt.lib... no
checking for sqlite3.h... no
nmake
'nmake' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
sqlite-ruby 1.2.4 からは DLL は配布されず、ソースのみが配布されるようになったため、1.2.3 を指定してインストール。
gem install sqlite3-ruby -v 1.2.3
環境変数を設定する
export RUBYOPT=rubygems set RUBYOPT=rubygems
またはプログラムの先頭で rubygems を require
require 'rubygems'
するとうまくいくらしい。
Windows 環境で
gem install mysql
を実行すると、
ERROR: While generating documentation for mysql-2.7.3-x86-mswin32 ... MESSAGE: Unhandled special: Special: type=17, text="<!-- $Id: README.html, v 1.20 2006-12-20 05:31:52 tommy Exp $ -->"
というエラーが発生。
ドキュメントは生成されていないが、mysql 用ライブラリのインストールは成功している。
エラーメッセージが気になる場合は、ドキュメントを生成しないオプションを追加。
gem install mysql --no-rdoc --no-ri