未加载 lib 文件 (Rails 5)
lib files are not loading (Rails 5)
我无法从我的应用程序的 lib 文件夹加载模块。这是我要加载的 file/module:
# app/lib/reusable.rb
module Reusable
# Check if the value is completely blank & empty
def is_empty(value)
end
end
我试过 #config.eager_load_paths << "#{Rails.root}/lib"
或
Dir[Rails.root.join('lib/**/*.rb')].each { |f| require f }
在 config/application.rb 内,但仍然无法正常工作。
我也尝试过 config.eager_load_paths << "#{Rails.root}/lib"
并且还尝试将 /lib 的所有文件移动到 app/lib 中,就像这里建议的那样: https://github.com/rails/rails/issues/13142 。但仍然有 none 个有效!
顺便说一句,不工作,我的意思是我得到了这个错误:
undefined method
is_empty' 对于 #:0x007f923c3c4b20>`
基本上Rails找不到我在我试图加载的可重用模块中定义的方法。
有没有我遗漏的步骤?或者 Rails 方面有问题?
正在加载文件。如果不是,您将收到 uninitialized constant Reusable
错误而不是 undefined method
错误。
如果您要拨打:
Reusable.is_empty(value)
那么is_empty
需要是class方法。类似于:
# app/lib/reusable.rb
module Reusable
# Check if the value is completely blank & empty
def self.is_empty(value)
end
end
或:
# app/lib/reusable.rb
module Reusable
# Check if the value is completely blank & empty
class << self
def is_empty(value)
end
end
end
取决于您的喜好。
我无法从我的应用程序的 lib 文件夹加载模块。这是我要加载的 file/module:
# app/lib/reusable.rb
module Reusable
# Check if the value is completely blank & empty
def is_empty(value)
end
end
我试过 #config.eager_load_paths << "#{Rails.root}/lib"
或
Dir[Rails.root.join('lib/**/*.rb')].each { |f| require f }
在 config/application.rb 内,但仍然无法正常工作。
我也尝试过 config.eager_load_paths << "#{Rails.root}/lib"
并且还尝试将 /lib 的所有文件移动到 app/lib 中,就像这里建议的那样: https://github.com/rails/rails/issues/13142 。但仍然有 none 个有效!
顺便说一句,不工作,我的意思是我得到了这个错误:
undefined method
is_empty' 对于 #:0x007f923c3c4b20>`
基本上Rails找不到我在我试图加载的可重用模块中定义的方法。
有没有我遗漏的步骤?或者 Rails 方面有问题?
正在加载文件。如果不是,您将收到 uninitialized constant Reusable
错误而不是 undefined method
错误。
如果您要拨打:
Reusable.is_empty(value)
那么is_empty
需要是class方法。类似于:
# app/lib/reusable.rb
module Reusable
# Check if the value is completely blank & empty
def self.is_empty(value)
end
end
或:
# app/lib/reusable.rb
module Reusable
# Check if the value is completely blank & empty
class << self
def is_empty(value)
end
end
end
取决于您的喜好。