Ruby研修2日目
今日の作業
テストケースの作成
Ruby研修
今日の作業でわかったこと&わからなかったこと
今日はRuby研修で質問がでました。
動的scaffoldでDBに存在しないidを指定したときのエラー画面の
カスタマイズはどうやってやるのか?
トランザクションのノーウエイトの指定をRailsにコーディング
でしていできるか?
この二つでした。
明日やること
Ruby研修
調べたことのまとめ
昨日シンボルについて調べてSymbolとStringの違いがわかったけど、
まだ違いがあるらしい。それは
Stringは破壊的なメソッドが使えるMutableなクラスだけど、 Symbolは破壊メソッドのないImmutableなクラスだということです。
とのこと。MutableとかImmutableという言葉初めて聞いたので調べたら
Mutableなオブジェクト | 作成後も状態を変えることのできるオブジェクト |
Immutableなオブジェクト | 作成後にその状態を変えることのできないオブジェクト |
次に破壊的なメソッドとは
自分自身を変更してしまう可能性があるメソッドのこと。
Rubyの命名規則に破壊的メソッドには末尾に「!」を付けるというものがある。
Stringクラスにはstrip(前後の空白を削除するメソッド)というメソッドが二つ定義されている。
「strip」と「strip!」である。
irb(main):001:0> str = " Ruby " => " Ruby " irb(main):002:0> str.strip => "Ruby" irb(main):003:0> str => " Ruby " irb(main):004:0> str.strip! => "Ruby" irb(main):005:0> str => "Ruby"
「strip」は自分自身は何も変化せず、前後の空白を削除した新しい文字を返している。
「strip!」は元の文字自身の前後の空白を削除している。
このようなメソッドが破壊的メソッド。
DBへの接続設定を直接指定する方法での躓いた点
実践RubyonRailsWebプログラミング入門
http://www.amazon.co.jp/%E5%AE%9F%E8%B7%B5-Ruby-Rails-Web%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80%E2%80%95%E7%84%A1%E9%A7%84%E3%81%AA%E3%81%8F%E8%BF%85%E9%80%9F%E3%81%AA%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83-%E4%BC%8A%E5%B0%BE%E6%9C%A8/dp/4881665413/ref=sr_1_7/250-6466027-4913040?ie=UTF8&s=books&qid=1186563803&sr=8-7
のP100を参考に実行したら
$ ruby change.rb change.rb:1:in `require': no such file to load -- active_record (LoadError)
というエラー!これはrequire 'rubygems'を一行目に加えて解決。
次に
$ ruby change.rb /var/lib/gems/1.8/gems/activerecord-1.15.3/lib/active_record/vendor/mysql.rb:107:in `initialize': No such file or directory - /tmp/mysql.sock (Errno::ENOENT)
というエラー発生!
これは設定するとき:socketを設定していなかったため
http://cyclon.s11.xrea.com/mt/archives/2005/11/ruby_on_rails_m.htmlを参考に
require 'rubygems' require 'active_record' ActiveRecord::Base.establish_connection(:adapter => "mysql",:host => "localhost", :database => "sample_development",:username => "root",:password => "",:socket => "/var/run/mysqld/mysqld.sock") class Custmer < ActiveRecord::Base end my_customer = Custmer.find(1) my_customer.name = "nagase" my_customer.address = "shiuzoka" my_customer.save
で解決