Ruby

まつもとゆきひろ氏が作成されたプログラミング言語です。実はRailsに興味をもち、この機会にRubyを勉強しようと思った次第です。開発環境はEclipseです。なんといってもEclipseプラグインがあるからです。

インストール

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のダウンロードとインストールを参考に。終ったら(といっても展開するだけですが)、ruby\binにpathをきっておきます。

開発環境

とりあえずエディターでやるのもなーと思い、EclipseRadRailsを使っていたのですが、(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://completemirage.blog55.fc2.com/blog-entry-39.html

irb

irb - Rubyリファレンスマニュアル

TIPS

def self.メソッド名

クラスを作成していなくても呼び出せる。javaのstaticみたいなものか?

変数

変数の先頭で意味合いが変わります。

@  #インスタンス変数
@@ #クラス変数
$  #グローバル変数

コメント

#

もしくは

=begin
=end

で囲む

シンボル

ソースを見てると:hogeとかコロンで始まるのを見つけ、なんじゃこりゃと思って調べてみると、参考:rubyのシンボルがいまいち理解できません
ようは、

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

配列

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

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

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アクセスの自動化

Hpricot

WWW::Mechanizeをいれれば入ってきてます。htmlを解析するのがとても楽!

RubyでHTMLとWebを操作するためのライブラリ、HpricotとWWW::Mechaniz
HTMLパーサ Hpricot

ハッシュソート

hashhoge2 = hashhoge.sort_by{|key,val|val}

スレッド

スレッド

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/からダウンロードしました。 今はどうなっているんだろうか。

リンク

本家
Ruby on Rails
JavaとRuby:主要機能の比較
逆引きRuby
Rubyで使われる記号の意味

参考書籍

コメント

  • #comment

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-07-24 (木) 03:59:00 (5775d)