ruby-on-rails - 如何在脚本中导入和执行数据库连接
问题描述
我正在编写许多脚本来在我们的系统上运行管家任务。在每个脚本的顶部,我使用 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
如果运行,我的脚本将连接到数据库。
我只使用 rubygems 和 activerecord gems 编写脚本。不在 Rails 应用程序中。
感谢您的任何提示
解决方案
通常的方法是在配置文件中定义您的连接和其他可能更改的数据。在 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)
推荐阅读
- python - 如何从张量流中的预训练模型访问全连接层
- activity-streams - ActivityPub 发件箱交付的收件箱分辨率
- c# - 如何在 C# 中的字符串中的每个字母之间插入空格?
- javascript - 如何在此条件语句中获取按钮单击数据?
- python - 在 Pandas 中执行此操作的更好方法?
- python-3.x - 三个熊猫数据帧的元素平均平均值?
- google-cloud-platform - Kubernetes 集群的负载均衡器
- python - Python Selenium - 使用 xpath 查找所有表值
- javascript - 如何删除反应导航顶部栏中选项卡之间的空白
- rust - 如何使用 Diesel 格式化 SQL 结果?