[英]Accessing a database through Rails model from a seperate Ruby script
我有一個帶有數據庫的Rails應用程序(使用ActiveRecord的PostgreSQL)
在同一服務器上的單獨目錄中,我有一個Ruby腳本。
如何從Ruby腳本通過我的Rails模型之一訪問Rails數據庫?
我已經看到可能需要ActiveRecord並傳遞數據庫詳細信息,但是據我了解,我將需要重建模型,這意味着需要重復進行大量的驗證,方法等。相反,我想以某種方式進行使用已經存在的模型。
我找到了具有所需行為的解決方案,並將其發布為以后遇到此問題的任何人的答案。
設置ENV['RAILS_ENV'] = "production"
,然后只需要在Ruby腳本中使用environment.rb
文件(具有適當的路徑)就可以很好地解決該問題。
這與@MurifoX提供的答案類似,但是省去了重新聲明數據庫連接的麻煩。
嘗試使用滑軌。 根據: http : //guides.rubyonrails.org/command_line.html#rails-runner
運行程序在Rails上下文中非交互地運行Ruby代碼。 例如:
bin/rails runner "Model.long_running_method"
以我的經驗,這可以很好地運行依賴於Active Record等的腳本。
將-e開關添加到命令以強制使用生產數據庫連接:
bin/rails runner -e staging "Model.long_running_method"
添加完成數據庫連接可能需要的任何其他環境變量。 如果您使用Devise gem,則還需要傳遞一個秘密,以允許完成Devise初始化。 其他寶石同樣可能需要一些幫助才能開始。
您可以使用require
將相對路徑傳遞到模型,然后將其實例化。
require '/path/to/your/model/inside/your/app'
model = Model.new
對於連接,如果您使用的是postgresql
,則可以使用pg
gem中的PGconn
類,如下所示:
@connection = PGconn.open(
:user => 'postgres',
:password => 'password',
:host => 'host',
:dbname => 'dbname')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.