2015-06-22 18 views
0

我試圖利用classifier gem將引號分類爲「開心」或「悲傷」。現在,我配置了應用程序,以便任何新的POST請求都通過使用以下命令來訓練分類器:bayes.train_happy "I am very happy" in app/controllers/quotes_controller.rb在導軌服務器加載後直接創建變量

只要在服務器運行時添加新引號,就可以工作。但是,只要服務器關閉或重新啓動(在開發過程中不斷),變量bayes就會被刪除,這樣,當我重新啓動服務器時,報價將保存在數據庫中,但bayes將變爲空。

本質上,我希望能夠在服務器啓動後直接調用以下代碼塊,以便用戶可以調用服務器啓動後直接構建的分類器。

bayes = Classifier::Bayes.new 'happy', 'sad' 

Quote.all.each do |quote| 
    eval("bayes.train_#{quote.classification} quote.body.upcase") 
    puts "wrote {#{quote.body}} to bayes" 
end 

其中Quote被定義爲db/schema.rb

create_table "quotes", force: true do |t| 
    t.string "body" 
    t.string "classification" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
end 

回答

1

以下的initializers文件夾中創建的任何文件,並把你的代碼存在。確保你有所有的依賴關係。 Rails將在服務器加載期間加載並執行它

+0

如果我正確解釋你,這是行不通的。我在'''intializers/bayes.rb'''上添加了一個包含所需代碼的文件作爲唯一內容。但是,當我嘗試通過在頁面頂部添加'''<%= bayes %>'''來訪問它時,出現一個新錯誤: '''未定義的局部變量或方法'bayes'''' – user3934731

+0

您需要存儲貝葉斯的某處可以在您的頁面稍後訪問它。 '''Rails.application.config.bayes'''是一個選項。 redis或類似的存儲會更好,尤其是如果bayes以任何方式都是複雜的結構。 – fiestacasey