* [[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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS