亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Rails 4中自動加載庫文件

在Rails 4中自動加載庫文件

楊魅力 2019-07-15 10:07:58
在Rails 4中自動加載庫文件我使用初始化器中的以下行來實現/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函數時也會得到NoMethodError。我的一個庫文件的示例:LIB/Extensions.rb:Time.class_eval do   def self.milli_stamp    Time.now.strftime('%Y%m%d%H%M%S%L').to_i  endend呼叫Time.milli_stamp將拋出NoMethodError我知道其他人也回答了類似的問題,但他們似乎都在處理命名約定和其他我以前不需要擔心的問題-我的lib類。工作過對于每次請求加載,我只想把它改為-啟動裝貨。什么是正確的方法來做這件事?
查看完整描述

3 回答

?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

我認為這可以解決你的問題:

  1. 在……里面config/application.rb:

    config.autoload_paths?<<?Rails.root.join('lib')

    并保留正確的命名約定利布.

    在……里面LIB/foo.rb:

    class?Fooend

    在……里面LIB/Foo/bar.rb:

    class?Foo::Barend
  2. 如果你真的想在文件里做一些猴子補丁,比如LIB/Extensions.rb,您可以手動要求:

    在……里面配置/初始化器/request.rb:

    require?"#{Rails.root}/lib/extensions"
查看完整回答
反對 回復 2019-07-15
?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

雖然這并不能直接回答這個問題,但我認為完全回避這個問題是一個不錯的選擇。

為了避免所有的autoload_pathseager_load_paths麻煩,在“app”目錄下創建一個“lib”或“misc”目錄。按照通常的方式放置代碼,Rails將加載文件,就像加載(和重新加載)模型文件一樣。


查看完整回答
反對 回復 2019-07-15
  • 3 回答
  • 0 關注
  • 542 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號