相关疑难解决方法(0)

在Rails 4中自动加载lib文件

我在初始化程序中使用以下行在/lib开发期间在我的目录中自动加载代码:

配置/初始化/ custom.rb:

RELOAD_LIBS = Dir[Rails.root + 'lib/**/*.rb'] if Rails.env.development?
Run Code Online (Sandbox Code Playgroud)

(来自Rails 3 Quicktip:在开发模式下自动重新加载lib文件夹)

它运行良好,但在生产中使用效率太低 - 而不是在每个请求上加载库,我只想在启动时加载它们.同一篇博客还有另一篇文章描述了如何做到这一点:

配置/ 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/**/"]
Run Code Online (Sandbox Code Playgroud)

但是,当我切换到它时,即使在开发中,我在尝试使用lib函数时也会得到NoM​​ethodErrors.

我的一个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
Run Code Online (Sandbox Code Playgroud)

调用Time.milli_stamp将抛出NoMethodError

我意识到其他人已经在SO上回答了类似的问题,但他们似乎都在处理命名约定和其他我之前不必担心的问题 - 我的lib类已经为每个请求加载工作了,我只是想改变它到per- 启动加载.这样做的正确方法是什么?

ruby-on-rails ruby-on-rails-4

226
推荐指数
3
解决办法
13万
查看次数

Rails/lib模块和

我正在为open_flash_chart插件编写自定义包装器.它被放入/lib并作为模块加载ApplicationController.

但是,我有一些类层次结构或smth问题.

从任何控制器我可以访问open_flash_chart的功能OpenFlashChart,Line等等

但是,在/lib模块中的类中,它不起作用!

有任何想法吗?

ruby module ruby-on-rails class

81
推荐指数
3
解决办法
10万
查看次数

Rails:我无法调用/ lib中的模块中的函数 - 我做错了什么?

我知道我做了一些愚蠢的事情或者没有做一些聪明的事情 - 我经常对两者都感到内疚.

这是一个让我痛苦的例子:

我有一个模块保存在/ lib中作为test_functions.rb,看起来像这样

module TestFunctions
  def abc
    puts 123
  end
end
Run Code Online (Sandbox Code Playgroud)

进入ruby脚本/跑步者,我可以看到模块正在自动加载(良好的配置以及所有......)

>> TestFunctions.instance_methods
=> ["abc"]
Run Code Online (Sandbox Code Playgroud)

所以这个方法是已知的,让我们试试吧

>> TestFunctions.abc
NoMethodError: undefined method `abc' for TestFunctions:Module from (irb):3
Run Code Online (Sandbox Code Playgroud)

不.这个怎么样?

>> TestFunctions::abc
NoMethodError: undefined method `abc' for TestFunctions:Module from (irb):4
Run Code Online (Sandbox Code Playgroud)

再试一次.

defined?(TestFunctions::abc) #=> nil, but
TestFunctions.method_defined? :abc #=> true
Run Code Online (Sandbox Code Playgroud)

就像我在顶部说的那样,我知道我是愚蠢的,有人会让我失望吗?

ruby ruby-on-rails

44
推荐指数
5
解决办法
4万
查看次数

标签 统计

ruby-on-rails ×3

ruby ×2

class ×1

module ×1

ruby-on-rails-4 ×1