Как мне вызвать перезагрузку консоли Rails!командовать программно? - PullRequest
2 голосов
/ 24 января 2012

При использовании консоли Rails есть удобная функция reload!, которая перезагружает модели и тому подобное. Как мне вызвать это из другой части моей программы?

Редактировать Меня немного спросили по варианту использования. Дело в том, что у меня был длительный процесс JVM, на котором работал Jruby, и repl clojure. Я мог запускать тесты RSpec из REPL и также мог запускать произвольный код Ruby оттуда. Но я не мог понять, как перезагрузить классы Ruby, чтобы я мог отредактировать код и увидеть, как он изменился во время выполнения Ruby. Я больше не использую эту настройку, главным образом потому, что тестирование было такой болью.

(я использую Jruby и могу программно получать доступ к Ruby VM из моего бэкэнда).

1 Ответ

2 голосов
/ 05 июня 2012

Вы пытались прикоснуться к restart.txt?К сожалению, у меня нет опыта работы с JRuby, но я подтвердил, что он работает в моем приложении.

FileUtils.touch('tmp/restart.txt')

Возможно, вы хотите сделать что-то, кроме запроса Get, и обезопасить его от какой-либо аутентификации.

Я бросил его в контроллер администратора и добавил маршрут в config / маршруты.

# app/controllers/admin.rb
class AdminController < ApplicationController::Base
    @@time = Time.now # This value gets cached with the model.
    def reboot
        FileUtils.touch('tmp/restart.txt')
        @restarted_time = @@time
    end
end

# config/routes.rb
namespace :admin
    get 'reboot'
end

# app/views/admin/reboot.html.erb
<%= @restarted_time.to_s %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...