2017-02-15 113 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

相关问题