首页 > 解决方案 > 如何在脚本中导入和执行数据库连接

问题描述

我正在编写许多脚本来在我们的系统上运行管家任务。在每个脚本的顶部,我使用 ActiveRecord::Base.connection 建立到数据库的连接。我想将此位保留在它自己的文件中,所以如果我移动到另一台服务器,我只能在一个地方更改它,但我还没有找到一种方法来做到这一点。

ActiveRecord::Base::establish_connection({                                                                                                                                                                                              
    :adapter   => 'mysql',                                                                                                                                                                                                              
    :host      => 'ip.address',                                                                                                                                                                                                         
    :database  => 'test-db',                                                                                                                                                                                                            
    :username  => 'userName',                                                                                                                                                                                                           
    :password  => 'passWord'})   

load_models
keyWord = KeyWord.find(:all)

我需要一个函数之类的东西,我可以像这样调用

def set_connection
   connection code here
   return connection
end

如果运行,我的脚本将连接到数据库。

我只使用 ruby​​gems 和 activerecord gems 编写脚本。不在 Rails 应用程序中。

感谢您的任何提示

标签: ruby-on-railsrubyactiverecord

解决方案


通常的方法是在配置文件中定义您的连接和其他可能更改的数据。在 Ruby 中,这在大多数情况下意味着 YAML 文件。您可以在配置中定义多个环境(开发、生产、..),这样您在移动代码时就不必更改任何内容,或者您​​可以拥有多个配置。

在您的 config.yaml 文件中

connection:
    adapter:  mysql
    host:     xxx.xxx.xxx.xxx                                                                                                                                                                                                      
    database: test-db                                                                                                                                                                                                            
    username: userName                                                                                                                                                            
    password: passWord

在您的主文件、助手文件或模型文件中

$config = YAML::load_file("./config.yaml")
ActiveRecord::Base.establish_connection($config.connection)

推荐阅读