所以我刚刚创建了一个/scripts
目录。脚本自动加载
config.autoload_paths += ["#{Rails.root}/scripts"]
config.eager_load_paths += ["#{Rails.root}/scripts"]
scripts/schemes/*.rb
中的脚本也应该运行,但它们不是。
实施例。使用
编写示例脚本scripts/schemes/write.rb
File.open('foo.txt', 'w') do |f|
f.write('123')
end
然后转到控制台rails console
。您将看不到要创建的文件,而预计会创建foo.txt
。
如何在启动时执行scripts/schemes/
中的这些文件?
要求/scripts/main.rb
要求require
)或加载load
scripts/schemes/*.rb
处的文件。 澄清:因为文件已经在application.rb中加载autoload_paths
Rails会抛出错误。
在scripts/schemes
中加入config.autoload_paths
。 澄清:没有任何改变。
答案 0 :(得分:0)
刚刚发现。
只有当名称符合文件名时,Rails才会加载类和模块。
例如,scripts/schemes/foo_name.rb
内容为
module FooName
# ...
end
或
class FooName
# ...
end