* [[Ruby]]
まつもとゆきひろ氏が作成されたプログラミング言語です。実はRailsに興味をもち、この機会にRubyを勉強しようと思った次第です。開発環境はEclipseです。なんといっても[[Eclipseプラグイン]]があるからです。
#contents
** インストール
http://www.ruby-lang.org/ja/からダウンロードしました。日本語なので大変ありがたいです。ぐだぐた書く必要もありません。 http://www.ruby-lang.org/ja/install.cgi?cmd=view;name=top
がすべてですね。とってもわかりやすいです。といいつつ
./configure --help
で確認して、
./configure --enable-shared
にしてます。
windowsは[[Rubyのダウンロードとインストール>http://www.rubylife.jp/install/install/index.html]]を参考に。終ったら(といっても展開するだけですが)、ruby\binにpathをきっておきます。
** 開発環境
とりあえずエディターでやるのもなーと思い、[[Eclipse]]でRadRailsを使っていたのですが、([[Eclipseプラグイン]]参照)
コード補完が使えなく、Declarationもないので、ん?あるぞ。両方ともいけます!
コンテンツ・アシストはRubyコンテンツ・アシストなんですね。
aptanaになってからか?サーバをdebugで起動させれば、debugもできますね。
他にも、NetBeans6.0でいけます。
http://ja.netbeans.org/~
当分どっちがなじむか試してみよう。
Leopardで触っているとRuby>デバッガーでruby-debugライブラリを使用にチェックをいれて、
gem install ruby-debug-ide
でいれても
/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin
にrdebug-ideがないと怒られたので、
そのディレクトリで
ln -s /Library/Ruby/Gems/1.8/gems/ruby-debug-ide-0.1.9/bin/rdebug-ide
としておきました。
[[EclipseユーザのためのNetBeans入門>http://www.okisoft.co.jp/esc/netbeans/netbeans01.html]]~
http://completemirage.blog55.fc2.com/blog-entry-39.html~
**irb
[[irb - Rubyリファレンスマニュアル>http://www.ruby-lang.org/ja/man/html/irb.html]]
**TIPS
***def self.メソッド名
クラスを作成していなくても呼び出せる。javaのstaticみたいなものか?
***変数
変数の先頭で意味合いが変わります。
@ #インスタンス変数
@@ #クラス変数
$ #グローバル変数
***コメント
#
もしくは
=begin
=end
で囲む
***シンボル
ソースを見てると:hogeとかコロンで始まるのを見つけ、なんじゃこりゃと思って調べてみると、参考:[[rubyのシンボルがいまいち理解できません>http://q.hatena.ne.jp/1157468923]]~
ようは、
p "hoge".object_id == "hoge".object_id
>false
p :hoge.object_id == :hoge.object_id
>true
でなのです。
***yield
これも最初は?でした。サンプルで理解しましょう。
class TestClass
attr_accessor :name1
attr_accessor :name2
def initialize()
@test = Array.new
@test.push("aaaa")
@test.push("bbb")
@test.push("ccc")
end
def hoge
yield(10,20)
#2回動く
yield(10,20)
end
def hoge2
@test.each{|tes|
yield(tes)
}
end
def hoge3
yield(name1,name2)
end
end
testclass = TestClass.new
testclass.hoge{|x,y| p x*y}
testclass.hoge2{|aa| p aa.length}
testclass.name1 = "名字";
testclass.name2 = "名前";
testclass.hoge3{|aa,bb| puts aa+bb}
結果
200
200
4
3
3
名字名前
false
true
***pp
require 'pp'
としておいて、
pp hoge
とするとpより改行してみやすくしてくれます。
***メソッドの一覧
p hoge.methods
p hoge.public_methods
p hoge.private_methods
p hoge.protected_methods
で一覧がみれます。
***hash
[[配列>http://www.namaraii.com/rubytips/?%C7%DB%CE%F3]]
***map
a = [10, 20, 30, 40, 50]
a.map! {|x| x*10}
p a #=>[100, 200, 300, 400, 500]
a.map {|x| x*10}
p a #=>[100, 200, 300, 400, 500]
ちなみに!は破壊的メソッドです。
***ディープコピー
newcart = Marshal.load(Marshal.dump(cart))
参考:[[Marshal>http://www.ruby-lang.org/ja/man/html/Marshal.html]]
***net/http
query_hash = Hash.new
query_hash["va"] = "hoge"
query_string = query_hash.map{|key,value|
"#{URI.encode(key)}=#{URI.encode(value)}"
}.join("&")
begin
Net::HTTP.start('search.yahoo.co.jp', 80) {|http|
response = http.post('/web/advanced',query_string)
p response.body
}
rescue
puts "exception on HTTP: #{$!}"
end
参考:[[標準添付ライブラリ紹介 【第 7 回】 net/http>http://jp.rubyist.net/magazine/?0013-BundledLibraries]]~
***WWW::Mechanize
gem install mechanizeで入れておいて、
require 'mechanize'
agent = WWW::Mechanize.new
page = agent.get('http://search.yahoo.co.jp/web/advanced')
form = page.forms.first
form.va = "hoge"
res = agent.submit(form)
resbody = res.body
p resbody
WWW::Mechanizeとnet/httpではWWW::Mechanizeの方が使いやすい
ただ0.7.0と0.7.1で動きが違うのが気になる...
とりあえず0.7.0を使ってます。
参考:[[WWW::Mechanize による Webアクセスの自動化>http://diaspar.jp/node/146]]~
***Hpricot
WWW::Mechanizeをいれれば入ってきてます。htmlを解析するのがとても楽!
[[RubyでHTMLとWebを操作するためのライブラリ、HpricotとWWW::Mechaniz>http://mono.kmc.gr.jp/~yhara/d/?date=20070205#p01]]~
[[HTMLパーサ Hpricot>http://tam.qmix.org/wiki/Hpricot.html]]~
*** ハッシュソート
hashhoge2 = hashhoge.sort_by{|key,val|val}
***スレッド
[[スレッド>http://www.namaraii.com/rubytips/?%A5%B9%A5%EC%A5%C3%A5%C9]]
***etc
attr_accessible :aaa,:bbb #ここで指定した項目以外が保護される。
***リンク
http://wiki.rubyonrails.com/rails/pages/RailsOnFedora~
http://osakanas.blog19.fc2.com/blog-entry-67.html~
http://www.goodpic.com/mt/archives2/2005/10/fedora_core_3_r.html~
**DB
***MySQL
gem install mysql -- --with-mysql-dir=/usr/local/mysql
メニュがでてきますので、windowsであれば、1番(-- --with-mysql-dir=/usr/local/mysqlはいりません)Linuxであれば、3で。またwindowsの場合は、pathに
;C:\Program Files\MySQL\MySQL Server 5.0\bin;
を追加しておいてあげましょう。
***PostgreSQL
http://www.postgresql.jp/interfaces/ruby/index-ja.html
** Apollo
Apollo = Delphi + Rubyとのことです。http://www.moriq.com/apollo/からダウンロードしました。
今はどうなっているんだろうか。
** リンク
[[本家>http://www.ruby-lang.org/ja/]]~
[[Ruby on Rails]]~
[[JavaとRuby:主要機能の比較>http://codezine.jp/a/article/aid/2144.aspx]]~
[[逆引きRuby>http://www.namaraii.com/rubytips/]]~
[[Rubyで使われる記号の意味>http://www.ruby-lang.org/ja/man/html/Ruby_A4C7BBC8A4EFA4ECA4EBB5ADB9E6A4CEB0D5CCA3.html]]~
** 参考書籍
** コメント
--#comment