Ruby on rails Rails、代码组织、映射/缩减器脚本的存放位置?
我知道这是一个有点奇怪的问题,但作为一个整洁的怪胎,我想问一些专业人士关于组织代码的最佳实践 因此,我们几乎有10个map/reduce任务(MongoDB使用),它们通常都在后台运行(使用redis scheduler),但是那里有相当多的代码,除非明确说明,否则我不希望加载,如果我把它放在我的Ruby on rails Rails、代码组织、映射/缩减器脚本的存放位置?,ruby-on-rails,mongodb,Ruby On Rails,Mongodb,我知道这是一个有点奇怪的问题,但作为一个整洁的怪胎,我想问一些专业人士关于组织代码的最佳实践 因此,我们几乎有10个map/reduce任务(MongoDB使用),它们通常都在后台运行(使用redis scheduler),但是那里有相当多的代码,除非明确说明,否则我不希望加载,如果我把它放在我的lib目录中,即使在我的web服务器刚刚启动时,它也不会加载到应用程序中吗?事实上,应用程序中的任何用户操作都不会使用该特定代码 所以我的问题是,我应该把它们都放在哪里,我应该如何组织它们?我对Rail
lib
目录中,即使在我的web服务器刚刚启动时,它也不会加载到应用程序中吗?事实上,应用程序中的任何用户操作都不会使用该特定代码
所以我的问题是,我应该把它们都放在哪里,我应该如何组织它们?我对Rails自动加载的理解是,在您第一次引用代码之前,代码不会加载到内存中。例如,我创建了一个名为
Thing
的类:
# app/concerns/thing.rb
class Thing
puts "Loaded Thing"
end
[ruby-1.9.2-p290@so_test_app test_app: 505]$ rails c
Loading development environment (Rails 3.2.1)
1.9.2p290 :001 > Thing.new
Loaded Thing
#<Thing:0x000001039c81b0>
1.9.2p290 :002 >
在创建Thing
的实例之前,加载Rails控制台不会打印任何内容:
# app/concerns/thing.rb
class Thing
puts "Loaded Thing"
end
[ruby-1.9.2-p290@so_test_app test_app: 505]$ rails c
Loading development environment (Rails 3.2.1)
1.9.2p290 :001 > Thing.new
Loaded Thing
#<Thing:0x000001039c81b0>
1.9.2p290 :002 >
我必须对此多加考虑。我对Rails自动加载的理解是,在您首次引用代码之前,代码不会加载到内存中。例如,我创建了一个名为
Thing
的类:
# app/concerns/thing.rb
class Thing
puts "Loaded Thing"
end
[ruby-1.9.2-p290@so_test_app test_app: 505]$ rails c
Loading development environment (Rails 3.2.1)
1.9.2p290 :001 > Thing.new
Loaded Thing
#<Thing:0x000001039c81b0>
1.9.2p290 :002 >
在创建Thing
的实例之前,加载Rails控制台不会打印任何内容:
# app/concerns/thing.rb
class Thing
puts "Loaded Thing"
end
[ruby-1.9.2-p290@so_test_app test_app: 505]$ rails c
Loading development environment (Rails 3.2.1)
1.9.2p290 :001 > Thing.new
Loaded Thing
#<Thing:0x000001039c81b0>
1.9.2p290 :002 >
我必须对此进行更多的思考。因为它们从未从应用程序本身执行过,您能否将它们放在
script
下,并使用rails runner
执行它们?因为它们从未从应用程序本身执行过,你能把它们放在script
下,用railsrunner
执行它们吗?嘿,布兰登,谢谢你的帮助,我真的很感激!是吗?把它放在另一个不在我的加载路径中的目录中似乎有点乱,我想这是rails团队的一个很好的假设,为什么你不想加载你的代码?嘿,布兰登,谢谢你的帮助,我真的很感激!是吗?把它放在另一个不在我的加载路径中的目录中似乎有点乱,我想这是rails团队的一个很好的假设,为什么你不想加载你的代码?英雄联盟