【发布时间】:2015-08-01 11:45:08
【问题描述】:
我试图在没有 Rails 的情况下使用 ActiveRecord 来创建一个连接到 MySql 数据库的 gem。与数据库的连接应该是可设置的,因为 gem 主要用于控制台使用,所以我不想事先在 YAML 文件中提供数据库连接信息,而是“即时”提供。这似乎带来了很多问题,因为 ActiveRecord 模型在初始化时加载了数据库信息。是否有任何其他方法可以共享数据库信息或某种方式使 active_record 不预加载数据库配置?是否有比“建立连接”更好的方法来共享连接信息?
这是我的代码:
class Blog
@@options = { :adapter => "mysql2" }
def self.options
@@options
end
def initialize(options = Hash.new)
@@options = {
:adapter => "mysql2",
:host => options[:host] || "localhost",
:username => options[:user] || "root",
:password => options[:pass] || "",
:database => options[:db] || "my_blog"
}
end
end
module Foobar
class Post < ActiveRecord::Base
establish_connection(Blog.options)
end
end
在命令行上
Blog.new(user:"foo",pass:"bar",db:"bang")
p=Foobar::Post.all
【问题讨论】:
-
因为是我写的,我正在开发各种命令行脚本,它们应该在没有 Rails 的情况下运行。这不是用于 Web 开发,而是用于控制台(终端)脚本。
-
如果脚本很容易使用 mysql CLI 否则使用 Rails rake 任务以节省大量时间
标签: ruby-on-rails ruby activerecord