2017-09-25 71 views
1

使用when gem時遇到了一些麻煩。我創造當我啓動它自己這是工作完全正常rake任務,但是當我試圖把它與每當我在我的日誌中看到以下消息自動化:PG :: UndefinedTable:錯誤:關係「services」不存在LINE 1:SELECT「services」。* FROM「services」

ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "services" does not exist 
LINE 1: SELECT "services".* FROM "services" 
           ^
: SELECT "services".* FROM "services" 
/Users/Naekh/.rvm/gems/ruby-2.4.1/gems/activerecord-5.0.6/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `async_exec' 
/Users/Naekh/.rvm/gems/ruby-2.4.1/gems/activerecord-5.0.6/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `block in exec_no_cache' 
/Users/Naekh/.rvm/gems/ruby-2.4.1/gems/activerecord-5.0.6/lib/active_record/connection_adapters/abstract_adapter.rb:590:in `block in log' 
/Users/Naekh/.rvm/gems/ruby-2.4.1/gems/activesupport-5.0.6/lib/active_support/notifications/instrumenter.rb:21:in `instrument' 
/Users/Naekh/.rvm/gems/ruby-2.4.1/gems/activerecord-5.0.6/lib/active_record/connection_adapters/abstract_adapter.rb:583:in `log' 
/Users/Naekh/.rvm/gems/ruby-2.4.1/gems/activerecord-5.0.6/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `exec_no_cache' 
/Users/Naekh/.rvm/gems/ruby-2.4.1/gems/activerecord-5.0.6/lib/active_record/connection_adapters/postgresql_adapter.rb:585:in `execute_and_clear' 
/Users/Naekh/.rvm/gems/ruby-2.4.1/gems/activerecord-5.0.6/lib/active_record/connection_adapters/postgresql/database_statements.rb:103:in `exec_query' 
/Users/Naekh/.rvm/gems/ruby-2.4.1/gems/activerecord-5.0.6/lib/active_record/connection_adapters/abstract/database_statements.rb:377:in `select_prepared' 
/Users/Naekh/.rvm/gems/ruby-2.4.1/gems/activerecord-5.0.6/lib/active_record/connection_adapters/abstract/database_statements.rb:39:in `select_all' 
/Users/Naekh/.rvm/gems/ruby-2.4.1/gems/activerecord-5.0.6/lib/active_record/connection_adapters/abstract/query_cache.rb:95:in `select_all' 
/Users/Naekh/.rvm/gems/ruby-2.4.1/gems/activerecord-5.0.6/lib/active_record/querying.rb:39:in `find_by_sql' 
/Users/Naekh/.rvm/gems/ruby-2.4.1/gems/activerecord-5.0.6/lib/active_record/relation.rb:706:in `exec_queries' 
/Users/Naekh/.rvm/gems/ruby-2.4.1/gems/activerecord-5.0.6/lib/active_record/relation.rb:583:in `load' 
/Users/Naekh/.rvm/gems/ruby-2.4.1/gems/activerecord-5.0.6/lib/active_record/relation.rb:260:in `records' 
/Users/Naekh/.rvm/gems/ruby-2.4.1/gems/activerecord-5.0.6/lib/active_record/relation/delegation.rb:38:in `each' 
/Users/Naekh/code/yoando/statuschecker/statuschecker/lib/tasks/fb_ping.rake:5:in `block (2 levels) in <top (required)>' 
/Users/Naekh/code/yoando/statuschecker/statuschecker/lib/tasks/rake_them_all.rake:4:in `block (2 levels) in <top (required)>' 
/Users/Naekh/.rvm/gems/ruby-2.4.1/gems/rake-12.1.0/exe/rake:27:in `<top (required)>' 
/Users/Naekh/.rvm/gems/ruby-2.4.1/bin/ruby_executable_hooks:15:in `eval' 
/Users/Naekh/.rvm/gems/ruby-2.4.1/bin/ruby_executable_hooks:15:in `<main>' 

這是一個命名的問題?我檢查並仔細檢查,但是我錯過了什麼?

我的環境是發展。

這裏是我的schedule.rb:

set :output, {:error => "log/cron_error_log.log", :standard => "log/cron_log.log"} 
every 2.minutes do 
    rake 'check:all', :environment => 'development' 
end 

和我的架構:

ActiveRecord::Schema.define(version: 20170922073721) do 

    enable_extension "plpgsql" 

    create_table "pings", force: :cascade do |t| 
    t.boolean "up" 
    t.integer "service_id" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.index ["service_id"], name: "index_pings_on_service_id", using: :btree 
    end 

    create_table "services", force: :cascade do |t| 
    t.string "name" 
    t.string "web_api" 
    t.string "json_path" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    end 

    add_foreign_key "pings", "services" 
end 

這裏是我的模型: - service.rb

class Service < ApplicationRecord 
    has_many :pings, dependent: :destroy 
    validates :name, uniqueness: true, presence: true 
    validates :web_api, uniqueness: true, presence: true 
end 
  • 平.rb

    類平< ApplicationRecord belongs_to的:服務 結束

+0

你可以添加你的模型@Doge? –

+1

我認爲每當創建的cron作業都無法訪問相同的一組gem(儘管它應該正常運行,然後呢?)。你可以嘗試使用cron作業使用的相同bash運行rake任務嗎? – ulferts

+0

@SebastiánPalma只是,謝謝 – Doge

回答

1

所以,我發現那裏的問題是感謝您的意見。

cron是發送此:

/bin/bash -l -c 'cd /Users/Naekh/code/yoando/statuschecker/statuschecker && RAILS_ENV=production bundle exec rake check:all --silent >> log/cron_log.log 2>> log/cron_error_log.log' 

正如你可以看到,他把它發送到生產環境中,即使在我的日程表:

set :output, {:error => "log/cron_error_log.log", :standard => "log/cron_log.log"} 
every 2.minutes do 
    rake 'check:all', :environment => 'development' 
end 

我告訴他送它到了開發環境。我現在需要找到一種方法來迫使他在該環境中去,因爲當我運行:

/bin/bash -l -c 'cd /Users/Naekh/code/yoando/statuschecker/statuschecker && RAILS_ENV=environment bundle exec rake check:all --silent >> log/cron_log.log 2>> log/cron_error_log.log' 

它的工作原理

我更新的cronjob環境:

whenever --update-crontab --set environment='development' 

,現在它的工作順利

相關問題