[前][次][番号順一覧][スレッド一覧]

rails:3450

From: naopontan <naopontan@g...>
Date: Mon, 28 Jun 2010 13:26:18 +0900
Subject: [rails:3450] Re: ActiveRecord で添付ライブラリを使いたい

naopontan です。

> 元々のファイルが「ipaddr.rb」なので、
> 「require "ipaddr"」しても自分自身をロードしようとしている(ロード済みな
> ので何もしない)のではないのかな?
ご指摘通り、命名の問題でした。

自動でつけられたクラス名が Ipaddr になっていたので、
IPAddr と区別がつくし、まっいいか。って思ってましたけど、
require で重なっているとこまでは気付きませんでした。
まだまだ不慣れですね>私

ありがとうございました。

2010年6月27日2:44 take_tk <ggb03124@n...>:
> たけ(tk)です。
>
> [rails:3446] ActiveRecord で添付ライブラリを使いたい にて
> naopontan <naopontan@g...> さん 曰く:
>
>> モデル内で IPAddr クラスを使いたいので以下の記述をしました。
>>
>> require 'ipaddr'
>> class Ipaddr < ActiveRecord::Base
>>   def hoge
>>     IPAddr.new "192.168.2.0/24"
>>   end
>> end
>>
>> しかし、console で実行すると以下のエラーとなります。
>> >> Ipaddr.new.hoge
>> NameError: uninitialized constant Ipaddr::IPAddr
>>         from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:105:in
>> `const_missing'
>>         from /home/takaesu/project/mcocs.git/app/models/ipaddr.rb:4:in `hoge'
>                                                          =========
>
> 元々のファイルが「ipaddr.rb」なので、
> 「require "ipaddr"」しても自分自身をロードしようとしている(ロード済みな
> ので何もしない)のではないのかな?
>
> 対策としては
>
> (a)rubyやrailsの既存のファイル名と衝突しないように「ipaddr.rb」の名前
> を変える。もしくは、
>
> (b)絶対パスで require する。
>
> require "/usr/lib/ruby/1.8/ipaddr.rb"
>
> でどうでしょうか?
>
> take_tk = kumagai hidetake
>
> --
> ML: rails@r...
> 使い方: http://QuickML.com/
>

--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      3446 2010-06-26 10:05 [naopontan@g...      ] ActiveRecord で添付ライブラリを使いたい 
      3447 2010-06-26 10:26 ┣[okkez000@g...       ]                                       
      3448 2010-06-26 19:44 ┗[ggb03124@n...       ]                                       
->    3450 2010-06-28 06:26  ┗[naopontan@g...      ]