[解決済み】Rails 4でlibファイルを自動ロードする方法
質問
私は、以下の行をイニシャライザーで使用して、コードを自動ロードしています。
/lib
ディレクトリを作成します。
config/initializers/custom.rb です。
RELOAD_LIBS = Dir[Rails.root + 'lib/**/*.rb'] if Rails.env.development?
から Rails 3 クイックヒント: 開発モードでの lib フォルダの自動再読み込み )
リクエストのたびにライブラリをロードするのではなく、起動時にロードしたいのです。同じブログで 別記事 を行う方法を説明しています。
config/application.rb:
# Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
しかし、それに切り替えると、開発中であっても、libの関数を使おうとするとNoMethodErrorsが発生します。
私のlibファイルの一例。
lib/extensions.rb。
Time.class_eval do
def self.milli_stamp
Time.now.strftime('%Y%m%d%H%M%S%L').to_i
end
end
呼び出し
Time.milli_stamp
は NoMethodError をスローします。
SOで他の人が同じような質問に答えているのは知っていますが、どれも命名規則や他の問題を扱っているようで、以前は気にする必要がなかったのですが、私のlibクラスはすでに 働く をリクエストごとのロードに変更したいだけです。 スタートアップ を読み込んでいます。正しい方法は何でしょうか?
どのように解決するのですか?
これで解決できるかもしれませんね。
-
で config/application.rb :
config.autoload_paths << Rails.root.join('lib')
で正しい命名規則を維持します。 lib .
で lib/foo.rb :
class Foo end
で lib/foo/bar.rb :
class Foo::Bar end
-
のように、ファイル内で猿真似をしたい場合。 lib/extensions.rb のように、手動で要求することができます。
で config/initializers/require.rb :
require "#{Rails.root}/lib/extensions"
追伸
-
Rails 3 オートロードモジュール/クラス by Bill Harding.
-
そして、Railsがオートローディングについて正確に何を行っているかを理解することです。
読む Railsのオートローディング - どのように動作し、どのような場合に動作しないか Simon Coffey著。
関連
-
[解決済み] Railsです。NameError: 初期化されていない定数
-
[解決済み] erbでコメントを追加する最適な方法
-
[解決済み] Errno::EACCESS: パーミッションが拒否された @ dir_s_mkdir
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] Rails 4で懸念事項を使用する方法
-
[解決済み] Rails 4: 利用可能なデータ型のリスト
-
[解決済み] Rails update_attributes without save?
-
[解決済み】Railsの認証トークンを理解する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】修正方法:エラー:'<ファイル名>'にチェックアウトされたコミットがない fatal: コマンドプロンプトで "git add ." を入力するとファイルの追加に失敗する
-
[解決済み】警告:定数 ::Fixnum は非推奨 新しいモデルを生成するとき
-
[解決済み】PG::ConnectionBad: fe_sendauth: パスワードが供給されない
-
[解決済み] RailsのRootディレクトリのパス?
-
[解決済み] Rails のインストールに失敗する: activesupport には Ruby のバージョン >= 2.2.2 が必要です。
-
[解決済み] Ruby on rails "No route matches" (ルートに一致するものがない)。
-
[解決済み] Errno::EACCESS: パーミッションが拒否された @ dir_s_mkdir
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜ?
-
[解決済み] gemのアップデート後、"Asset was not declared to be precompiled in production "でテストが失敗する。
-
[解決済み] bundle install --without production は何をするのですか?