Зачем мне снова запускать приложение sinatra при внесении изменений, а моя среда - нет: разработка? - PullRequest
1 голос
/ 07 августа 2011

Я только что реализовал конфигурацию Compass для моего приложения Sinatra, но когда я изменяю среду на :test или :production и изменяю свои файлы, например screen.sass или index.haml, мои изменения не отражаются при перезагрузке страницы, поэтому я нужно снова запустить мое приложение?

Это нормально? Это только я?

Вот так выглядит мой app.rb файл:

require 'sinatra'
require 'haml'
require 'sass'
require 'compass'
require './helpers.rb'

configure do
  set :environment, :test

  Compass.configuration do |config|
    settings.environment == :production ? 
      config.output_style = :compressed : 
      config.output_style = :nested
    settings.environment == :development ?
      config.line_comments = true :
      config.line_comments = false
  end

  set :sass, Compass.sass_engine_options
end

before do
  @js = 'javascript:;'
end

get '/scripts/jquery.js' do
  # Downloads the latest jQuery 1.x version when needed. Requires to reload the page after done.
  `curl "https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" >> public/scripts/jquery.js`
end

get '/styles/:name.css' do
  sass :"styles/#{params[:name]}"
end

get '/?' do
  haml :index
end

get '/:page/?' do
  haml params[:page].to_sym
end

Есть идеи?

Ответы [ 4 ]

2 голосов
/ 07 августа 2011

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

Существуют опции для автоматического обнаружения изменений и перезапуска приложения в Sinatra FAQ .

0 голосов
/ 27 сентября 2012

Я использую камень для дробовика.

gem install shotgun

затем

shotgun app.rb  

из директории приложения

это затем перезагружает приложение по запросу, а не удерживает все это в памяти.Вы заходите на сайт на localhost: 9393

0 голосов
/ 08 августа 2011

Я использовал sinatra :: reloader но мне не понравились огромные зависимости (как мы все должны помнить, сколько драгоценных камней активируется)

пистолет (в нежном возрасте версии 0.0.2), и я думаю, что хорошо справляется с требуемой работой

0 голосов
/ 08 августа 2011

Поскольку Shotgun частично исправляет проблему (перезагружая файлы для вашего производства, возможно, попробуйте Sinatra :: Reloader, который, IMHO, работает лучше, чем Shotgun.

Может быть что-то вроде (не проверено)

require "sinatra"

configure(:production) do |c|
  require "sinatra/reloader"
  c.also_reload "*.sass", "*.haml"
end

При этом, вы уверены, что вам нужно такое поведение в рабочей / тестовой среде для обновления? Развитие окр. должно быть (по крайней мере, для чего я его использую) для такого рода горячих испытаний.

...