我会解释我的情况。
下面是我的rails应用程序中的文件树:
lib/my_module.rb
require 'my_module/my_file'
module My_module
end
lib/my_module/my_file.rb
class Tweetag::Collector
(...)
end
我做了一个ruby脚本,放在config/jobs/
我真的不明白我怎么应该要求在这个文件中的文件my_file.rb。
require '../../my_module/my_file.rb'
它给了我“要求”:无法加载此类文件
同样的错误只是要求'my_module'这是我在我的控制器.
有人能解释一下吗?非常感谢
5条答案
按热度按时间3gtaxfhh1#
您可以自动包含lib
folder
下的所有内容并避免这些问题:在
config/application.rb
中键入此文件xzabzqsa2#
如果您希望只需要一个特定的文件,那么请执行与Rails根目录相关的操作,如下所示
如果您只想在某些模型中需要它,可以说app/models/user.rb
在用户模型中执行
如果你想让它在任何地方都能使用
一个解决方案是由@VecchiaSpugna给出的
或者你可以在config/initializers文件夹中创建一个ruby文件
并要求所有文件在那里一个接一个
或
你不需要在require中指定文件的扩展名。
bd1hkmkf3#
我认为有两个解决办法。
1)将库路径添加到搜索路径。在ruby中:
然后你可以
require 'my_module.rb'
我认为Vecchia Spugna answer是我的ruby-answer的rails版本。(我不太熟悉铁路)。
2)另一个解决方案:
在您的
lib/my_module.rb
中,您需要my_file
。这个文件是相对于你的my_module.rb
?然后使用require_relative
:8ljdwjyq4#
只是插话,因为我花了很长时间才弄清楚这一点,因为很少有解决方案奏效。
·我不得不使用普通的旧要求。我把它放在
config/application.rb
文件中。patching_file_path = File.expand_path("./lib", Dir.pwd) Dir[patching_file_path+'/*.rb'].each {|file| require file }
·我还将临时
puts "I'm Working!
放在我试图要求的文件中,以便我可以检查控制台以查看它是否实际加载。·另外,如果你使用的是spring loader,在你启动你的控制台之前,你应该在你的终端中执行
bin/spring stop
,然后再启动你的rails控制台。否则,它不会加载新文件。eqfvzcg85#
与require_relative类似,
这将扩展当前文件目录的路径,并添加所需的相对文件路径。