如何让我的独立ActiveRecord :: Base工具连接到我的生产数据库?

时间:2015-07-24 00:34:56

标签: ruby-on-rails postgresql activerecord

这是我创建的用于将用户添加到我的生产数据库的脚本。

puts "Name of the user"
name = gets.chomp

puts "Login of the user"
login = gets.chomp

等。等.....

我想要做的是连接到我的生产数据库,这样我就可以轻松管理新用户,而无需多次输入很多字段。

在文件的顶部,我尝试了几种方法连接到数据库,但无济于事....

尝试1:

require 'config/environment.rb'

这将我连接到开发数据库

尝试2:

require 'active_record'
ActiveRecord::Base.establish_connection(:production)

`establish_connection': production database is not configured (ActiveRecord::AdapterNotSpecified)

尝试3:

require 'active_record'
ActiveRecord::Base.establish_connection(:adapter => 'postgresql', :host => 'company_host')

load_missing_constant': uninitialized constant Rails (NameError)

尝试4:

  require 'active_record'
ActiveRecord::Base.establish_connection(:adapter => 'postgresql', :host => 'company_host', :database => '/var/local/config/database.yml')

  load_missing_constant': uninitialized constant Rails (NameError)

尝试5:

ActiveRecord::Base.establish_connection(:adapter => 'postgresql', :host => 'host.company.com',
                                    :database => 'production', :user => 'user', :password => 'password')

我的生产数据库的database.yml文件条目如下所示。

production:
  db_host: host.company.com
  db_name: production
  db_pass: password
  db_user: user

我已经尝试了API guide中找到的其他组合,但无济于事。我正在运行rails 2.3.8。和红宝石2.0。非常感谢帮助。

1 个答案:

答案 0 :(得分:0)

我会创建一个特殊的rake任务。

  1. 假设我想要一个单独的命名空间manual,并且任务的名称是create_user

    namespace manual
      task :create_user => :environment do
        puts "Name of the user"
        name = gets.chomp
    
        puts "Login of the user"
        login = gets.chomp
      end
    
  2. 运行ENV=production rake manual:create_user

  3. 如果有帮助,您甚至可以将参数传递给rake任务。

    不确定这是否是您正在寻找的,但这可能是您尝试实现的更快的替代方案。

    如果这没有帮助,请继续评论答案:)