Хобрук: Ваш путь к мастерству в программировании

Задача Rake, идентифицирующая среду разработки ruby ​​и sinatra

Я написал планировщик, используя «каждый раз, когда драгоценный камень». один из моих планировщиков каждый день запускает задачу rake. Эта задача rake вызывает метод в моей модели и выполняет операции активной записи.

все работает нормально, но активная запись подключается к среде «разработки» в файле database.yml и подключается к базе данных разработки во время производства.

config/schedule.rb 

set :output, "log/cron_log.log"

every 6.hours do
  rake "sidekiq:restart"
end

every :day, :at => '01:00am' do
  rake 'prune_users:older_than_2months'
end

Rakefile

require 'newrelic_rpm'
require './app.rb'
import './lib/tasks/sidekiq.rake'
import './lib/tasks/reap_user.rake'
import './models/exportuser.rb'

/lib/tasks/reap_user.rake

require 'sinatra/activerecord'
require 'sinatra/activerecord/rake'

namespace :prune_users do

  desc 'Delete 2 months older users with status non-active'
  task :older_than_2months do
    ExportUser.delete_users_b4_2months
  end

end

/models/exportuser.rb

class ExportUser < ActiveRecord::Base
  self.table_name = 'exportusers'

  def self.delete_users_b4_2months
    begin
      @old_users = ExportUser.where("status != ? and Modified < ?", "Active", 2.months.ago)
      puts "Count of users before 2 months with non-active status on #{Time.now}"
      puts @old_users.count
      @old_users.find_each do |users|
        users.destroy!
      end
    rescue => err
      NewRelic::Agent.notice_error(err)
    end
  end

end

Все работает нормально, но в ExportUser.rb активрекорд подключается к базе данных разработки. Как заставить его подключиться к производству.?


Ответы:


1

Ваше приложение должно учитывать переменную среды RACK_ENV.

Попробуйте ввести следующую команду:

user@server $ RACK_ENV=production rake prune_users:older_than_2months

и проверьте, подключается ли он к рабочей базе данных. Если это так, вам нужно изменить все, что вызывает ваши запланированные задания, чтобы также включить переменную среды RACK_ENV

25.08.2015
  • Спасибо за ваше решение!!! да сработало :). но где я должен указать этот RACK_ENV в коде?? 25.08.2015
  • @joe, вы всегда можете жестко закодировать это в коде с помощью ENV['RACK_ENV']='production', но это плохая практика. Я не знаком с тем, как настраивается Sidekiq, но где-то будет опция, которая позволит вам сделать это либо через файл конфигурации yaml, либо через переменную среды. 25.08.2015
  • Да, я добавил ENV['RACK_ENV']='production' в свой файл reap_users.rake в первой строке. Это сработало нормально .. Спасибо :) 25.08.2015

  • 2

    Добавьте ENV['RACK_ENV']='production' в первую строку файла задачи rake "reap_users.rake" перед require 'sinatra/activerecord'. это сработало нормально :)

    25.08.2015
    Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..