Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails、代码组织、映射/缩减器脚本的存放位置?_Ruby On Rails_Mongodb - Fatal编程技术网

Ruby on rails Rails、代码组织、映射/缩减器脚本的存放位置?

Ruby on rails Rails、代码组织、映射/缩减器脚本的存放位置?,ruby-on-rails,mongodb,Ruby On Rails,Mongodb,我知道这是一个有点奇怪的问题,但作为一个整洁的怪胎,我想问一些专业人士关于组织代码的最佳实践 因此,我们几乎有10个map/reduce任务(MongoDB使用),它们通常都在后台运行(使用redis scheduler),但是那里有相当多的代码,除非明确说明,否则我不希望加载,如果我把它放在我的lib目录中,即使在我的web服务器刚刚启动时,它也不会加载到应用程序中吗?事实上,应用程序中的任何用户操作都不会使用该特定代码 所以我的问题是,我应该把它们都放在哪里,我应该如何组织它们?我对Rail

我知道这是一个有点奇怪的问题,但作为一个整洁的怪胎,我想问一些专业人士关于组织代码的最佳实践

因此,我们几乎有10个map/reduce任务(MongoDB使用),它们通常都在后台运行(使用redis scheduler),但是那里有相当多的代码,除非明确说明,否则我不希望加载,如果我把它放在我的
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团队的一个很好的假设,为什么你不想加载你的代码?英雄联盟