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... ]