簡體   English   中英

通過Rails模型從單獨的Ruby腳本訪問數據庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM