2015-04-06 75 views
1

我有一个控制器操作,用于更改数据库中所有记录的状态。我想在生产中运行它。在本地服务器上,我可以访问导航控制台并执行操作如何从生产命令行访问控制器动作

=> x= WelcomeController.new 
=> x.method_name 

在生产中,我没有导轨控制台。我可以直接从命令行运行控制器方法吗?执行这种任务的首选方式是什么?我可以在任何地方像帮助者一样移动方法。

+0

您可以在生产模式下运行IRB控制台:如果已定义,“rails console production”将加载'production' env。默认情况下,'rails console'会运行'rails console development';但我不认为你应该在控制台中调用Controller方法。为什么不连接到您的网站并触发控制器的操作?或者最终做出控制器行为逻辑的耙子任务? – MrYoshiji

+0

如果你的意思是通过浏览器连接到网站,它会超时,因为任务需要很长时间。 –

+1

然后做一个Rake任务或者做一个控制器动作触发这个特定的rake任务;-) – MrYoshiji

回答

-1

将这样的逻辑保存在控制器中是一种不好的做法。您绝对应该将其移至模型或服务层。我建议你看看this article

+0

这篇文章完全是题外话。 –

+0

@JamilKhan你错了,你应该使用一个Service类来保存你的进程的逻辑。然后,无论是Controller的操作,Rake Task还是直接在你的控制台中,你都可以调用这个服务类并要求它执行逻辑。文章并非完全脱离主题,有些建议不适合您,但重构的概念与您的案例非常相关。 – MrYoshiji

相关问题