Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Настройки приложения


Автор: aktuba 21.6.2013, 01:54
Друзья, нужна помощь. Есть приложение (app.rb):

Код

# encoding: utf-8

require 'sinatra'
require 'sinatra/reloader'
require 'data_mapper'

class App < Sinatra::Base

    configure do
        enable :static, :logging, :inline_templates
        disable :sessions, :run, :dump_errors, :raise_errors, :reload
    end

    configure :development do
        enable :dump_errors, :raise_errors, :reload

        register Sinatra::Reloader
        Dir.glob('./{lib,model}/*.rb').each { |file| also_reload file }
    end

    DataMapper.setup(:default, 'mysql://vrp2:vrp@localhost/vrp2')

    Dir.glob('./{lib,model}/*.rb').each { |file| require file }

    get '/' do
        erb :index
    end

end


Как видите, само приложение - всего 3 строки, остальное конфиги... Очень хочется (хоть меня и убеждают, что это не нужно), вынести эти конфиги в отдельный файл, чтобы не мозолил глаза. Создал файл bootstrap.rb со следующим содержанием:

Код

# encoding: utf-8

require 'sinatra'
require 'sinatra/reloader'
require 'data_mapper'

class Sinatra::Base

    configure do
        enable :static, :logging, :inline_templates
        disable :sessions, :run, :dump_errors, :raise_errors, :reload
    end

    configure :development do
        enable :dump_errors, :raise_errors, :reload

        register Sinatra::Reloader
        Dir.glob('./{lib,model}/*.rb').each { |file| also_reload file }
    end

    DataMapper.setup(:default, 'mysql://vrp2:vrp@localhost/vrp2')

    Dir.glob('./{lib,model}/*.rb').each { |file| require file }

end


Само приложение (app.rb) теперь выглядит так:
Код

# encoding: utf-8

require './bootstrap.rb'

class App < Sinatra::Base

    get '/' do
        erb :index
    end

end


Вроде все хорошо, кроме одного - при обновлении самого приложения (app.rb) не происходит перезапуск сервера, т.е. не срабатывает Sinatra::Reloader. Если же меняю файлы в директориях lib или model - срабатывает перезапуск thin. Добавление строки also_reload './app.rb' ничего не дает.

Подскажите plz, как реализовать задуманное правильно? Что сделать, чтобы thin перезапускался при изменении любого файла?

Автор: Photon 22.6.2013, 10:03
А куда пропали require, которые были в исходном app.rb?

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id51c388c36ccc19520a000002#findElement_E7045_51c54c446ccc19ff2c00635c_0

Автор: aktuba 22.6.2013, 16:28
Цитата(Photon @ 22.6.2013,  11:03)
А куда пропали require, которые были в исходном app.rb?

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id51c388c36ccc19520a000002#findElement_E7045_51c54c446ccc19ff2c00635c_0

Упс... Поправил. Они попали в bootstrap.rb.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)