Выполнять команды из внешнего файла в Rails - PullRequest
1 голос
/ 19 августа 2009

Есть ли простой способ заставить действие rails загрузить внешний файл команд и затем выполнить их?

Например, я пытаюсь написать группу рельсов, создающих методы для предварительного заполнения группы таблиц в базе данных.

В идеале, я бы хотел, чтобы действие проверяло наличие файла, если оно существует, запускает все команды, а затем удаляет файл, чтобы он больше не выполнялся.

Итак, внешний файл будет выглядеть примерно так:

MyTable.create :name => "New 1"
MyTable.create :name => "New 2"

Легко ли это сделать в рельсах?

Некоторые уточнения:

Идея заключалась бы в том, что если после релиза необходимо доработать определенные настроечные таблицы и что вы не можете сделать это с помощью сценария миграции (т.е. вы инициализируете базу данных из файла schema.rb) , вы могли бы:

  1. Создайте файл с именем «update_data.rb», например
  2. Поместите его в директорию администратора
  3. Назначить какое-либо действие в браузере (например, / admin / update_data)
  4. Затем Rails будет читать файл, выполняя команды построчно, а затем
  5. Удалите файл после завершения, чтобы случайно не выполнить действия

Это помогает? Это будет файл для одноразовых действий, которые необходимо выполнить после выпуска. Если есть лучший метод, я, конечно, все уши!

Ответы [ 3 ]

2 голосов
/ 19 августа 2009

Другим вариантом будет рейк. Вы можете создать новый файл в lib / tasks - мы назовем ваш bootstrap.rake

namespace :db do
  desc 'Load an initial set of data'
  task :bootstrap => :environment do
    if your_file_exists
      puts 'Loading data...'
      this_is_where_the_magic_happens        
    end
  end
end

Затем из консоли вы можете запустить rake db: bootstrap и запланировать его с помощью crontab, если хотите.

1 голос
/ 19 августа 2009

Для шага 4:

load("update_data.rb")

Я полагаю, что это загрузит и выполнит ваш скрипт.

0 голосов
/ 19 августа 2009

Звучит как работа для сценариста / бегуна.

http://www.ameravant.com/posts/recurring-tasks-in-ruby-on-rails-using-runner-and-cron-jobs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...