我有一个带有数据库的Rails应用程序(使用ActiveRecord的PostgreSQL)
在同一台服务器上的一个单独目录中,我有一个Ruby脚本。
我如何从Ruby脚本通过我的一个Rails模型到达Rails数据库?
我已经看到可以要求ActiveRecord并传入数据库详细信息,但据我所知,我需要重建模型,这意味着需要重复验证,方法等等。相反,我会喜欢以某种方式使用已经存在的模型。
答案 0 :(得分:1)
我找到了一个具有我正在寻找的行为的解决方案,并将其发布为以后遇到此问题的任何人的答案。
设置ENV['RAILS_ENV'] = "production"
然后在Ruby脚本中简单地要求environment.rb
文件(带有适当的路径)可以很好地解决问题。
这类似于@MurifoX提供的答案,但可以节省您重新声明数据库连接的时间。
答案 1 :(得分:1)
尝试使用rails runner。根据:http://guides.rubyonrails.org/command_line.html#rails-runner
runner以非交互方式在Rails的上下文中运行Ruby代码。对于 实例:
bin/rails runner "Model.long_running_method"
根据我的经验,这可以很好地运行依赖Active Record等的脚本。
将-e开关添加到命令以强制使用生产数据库连接:
bin/rails runner -e staging "Model.long_running_method"
添加完成数据库连接可能需要的任何其他环境变量。如果您使用Devise gem,您还需要传递一个秘密以允许完成Devise初始化。其他宝石可能同样需要一些帮助才能开始。
答案 2 :(得分:0)
您可以使用require
传递模型的相对路径,然后将其用作实例。
require '/path/to/your/model/inside/your/app'
model = Model.new
对于连接,如果您使用postgresql
,则可以使用PGconn
gem中的pg
类,如下所示:
@connection = PGconn.open(
:user => 'postgres',
:password => 'password',
:host => 'host',
:dbname => 'dbname')