如何要求在 Rails 之外工作的活动记录
Posted
技术标签:
【中文标题】如何要求在 Rails 之外工作的活动记录【英文标题】:how to require active record working outside of rails 【发布时间】:2011-04-09 08:38:12 【问题描述】:我需要主动记录,但我在 Rails 之外工作(原因如下:Simple Ruby Input Validation Library)。我需要整个 rails gem,还是可以做 DRYer?
【问题讨论】:
【参考方案1】:这是我在 Rails 之外使用 ActiveRecord 的方式:
#!/usr/bin/ruby
require 'active_record'
require 'mysql2' # or 'pg' or 'sqlite3'
ActiveRecord::Base.establish_connection(
adapter: 'mysql2', # or 'postgresql' or 'sqlite3'
database: 'DB_NAME',
username: 'DB_USER',
password: 'DB_PASS',
host: 'localhost'
)
# Note that the corresponding table is 'orders'
class Order < ActiveRecord::Base
end
Order.all.each do |o|
puts "o: #o.inspect"
end
【讨论】:
你需要指定mysql2作为适配器,而不是mysql(对于googlers)。 你还需要 ubuntu 上的 libmysqlclient-dev(可能还有其他平台) @BenWest libmysqlclient-dev有什么用? (对于我缺乏这方面的基本知识,我深表歉意) @Renan 因为 ruby gem 编译它的一些依赖项,它需要它的依赖项链接到的库的开发头文件。 cprogramming.com/compilingandlinking.html 我希望人们不要直接引用 Ubuntu/Debian 软件包名称。他们的命名约定充其量是奇怪的,这会导致令人困惑的答案被投票,这最终无助于人们搜索。【参考方案2】:require 'rubygems'
require 'active_record'
【讨论】:
Ruby 1.9 假定require 'rubygems'
。以上是关于如何要求在 Rails 之外工作的活动记录的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Rails 2.3.8 中使用带有关联的 Active 脚手架列出活动记录?
如何加快rails3.2中的活动记录?我的活动记录查询时间超过 3 分钟
如何在整个 Rails 活动记录关联链中取消特定模型的默认范围?