2017-02-15 111 views
0

我想運行腳本文件,應用程序的後院。服務器啓動時,腳本必須運行;直到服務器停止。 我知道rails runner命令;但我的腳本包含數據庫進程(插入),並返回錯誤命名爲:Ruby on Rails如何在不交互的情況下運行腳本文件?

: uninitialized constant DataRecord (NameError) 

script.rb:

# 
# Some codes here 
# 

DataRecord.create(sensor_id: data[0].to_s, temperature: data[1].to_f, humudity: data[2].to_f) 

# 
# And some codes here.. 
# 

----------------------------------------------------------------- 

DataRecord是我的模型。它可以在'application_controller'上運行,當然還有交互。有人必須進入該網站。我不想要它。

data_record.rb:

class DataRecord < ApplicationRecord 
end 

application_record.rb:安裝

class ApplicationRecord < ActiveRecord::Base 
self.abstract_class = true 
end 

ActiveRecord的寶石。

~$ ruby -v 
ruby 2.3.1p112 

~$ rails -v 
Rails 5.0.1 

回答

0

在腳本的開頭添加require './config/environment'在你的腳本加載您的Rails應用程序(和你需要的型號)。

您可能想將其製作成rakethor任務。

+0

你認爲ActiveJobs怎麼樣?我不知道它是如何使用的。但根據http://guides.rubyonrails.org/v4.2/active_job_basics.html,它可以運行後端進程;就像我想要的一樣。但是,我不知道如何使用它,並且我不明白:/ – QatarNotAlone

+0

要使用activejob,您需要設置一個像sidekiq或resque這樣的作業運行器(如果您不是它只是在一個線程的Web應用程序進程中運行) – glebtv

+0

好的,朋友。我會嘗試你的suggession和activejob,並返回結果。謝謝。 – QatarNotAlone

相關問題