Pistolfly のすべての投稿

Software Engineer in Tokyo, Japan

ActiveRecordで実行されるSQLをscript/consoleで確認するには

script/console上で、ActiveRecordが実行するSQLを確認するには、script/consoleで以下を実行する。

>> ActiveRecord::Base.logger = Logger.new(STDOUT)

ただし、config.cache_classes = true だと、表示されない。

$ ./script/console 
Loading development environment (Rails 2.3.5)
>> ActiveRecord::Base.logger = Logger.new(STDOUT)
=> #<Logger:0x101672210 @level=0, @progname=nil, @logdev=#<Logger::LogDevice:0x101671fe0 @shift_size=nil, @shift_age=nil, @filename=nil, @mutex=#<Logger::LogDevice::LogDeviceMutex:0x101671f68 @mon_entering_queue=[], @mon_count=0, @mon_owner=nil, @mon_waiting_queue=[]>, @dev=#<IO:0x100183bb0>>, @formatter=nil, @default_formatter=#<Logger::Formatter:0x101672198 @datetime_format=nil>>
>> customer = Customer.new
  SQL (0.1ms)   SET NAMES 'utf8'
  SQL (0.1ms)   SET SQL_AUTO_IS_NULL=0
  Customer Columns (1.3ms)   SHOW FIELDS FROM `customers`
=> #<Customer id: nil, name: nil, created_at: nil, updated_at: nil>
>> customer.save!
  SQL (0.1ms)   BEGIN
  Customer Create (0.3ms)   INSERT INTO `customers` (`name`, `created_at`, `updated_at`) VALUES(NULL, '2010-01-22 03:42:43', '2010-01-22 03:42:43')
  SQL (0.5ms)   COMMIT
=> true

~/.irbrc に以下のように設定しておくといい。

if ENV['RAILS_ENV']
  # Called after the irb session is initialized and Rails has been loaded
  IRB.conf[:IRB_RC] = Proc.new do
    logger = Logger.new(STDOUT)
    ActiveRecord::Base.logger = logger
    ActiveResource::Base.logger = logger
  end
end

Maintainable Software: Rails Logging Tips

Windows Server 2008 R2 に Microsoft SQL Server 2008 をインストールしようとしたらエラー

EZ-NET: Windows Web Server 2008 で .NET Framework を有効化する
Windows Server 2008 R2 に Microsoft SQL Server 2008 をインストールしようとしたら、次のエラーメッセージが表示され、SQL Server 2008 のセットアップを起動することができなかった。

インストールするにはロール管理ツールを使用するか、または Microsoft .NET Framework 3.5 SP1 を構成します。

解決方法
管理ツール>サーバーマネージャー>機能>機能の追加で、「.NET Framework 3.5.1の機能」にチェックする。

cygwin 1.7のsshでssh: Could not resolve hostname XXXXX: hostname nor servname provided, or not known

cygwinを1.7(Windows Server 2008 x64)にしたら、sshで以下のようなエラーが出て接続できなくなった。
# Vista ではCygwinを1.7にしても、ssh接続に特に問題は無かった。

ssh: Could not resolve hostname XXXXX: hostname nor servname provided, or not known

~/.ssh/configに以下を設定したら解決。

AddressFamily inet

Re: OpenSSH 5.1: call for testing - Unix Linux Forum - Fixunix.com
Manual Pages: ssh_config(5)

Railsでmodelを更新する前に変更内容を知る方法

model.changed?  変更されてるかどうか。
model.changed   変更されているattribute名の配列。
model.changes   変更されているattribute名前と値のハッシュ。値は変更前更後の値を配列で。
model.attr_changed?      attrが変更されているかどうか。
model.attr_was           attrの変更前の値。変更されてなかったら元の値。
model.attr_change        attrの変更前後の値の配列。変更されてなかったらnil。
model.attr_will_change!  attrを変更することを明示。

Railsでmodelを更新する前に変更内容を知る方法 - 医者を志す妻を応援する夫の日記

Module: ActiveRecord::Dirty