Подтвердить что ты не робот

Как сделать живую перезагрузку с помощью Rails 4 и Ruby 2.0?

Я хочу видеть живые изменения в браузере, если я редактирую файл .scss или .erb в текстовом редакторе в проекте Rails 4 + Ruby 2.0.

Я попробовал Guard и Guard-live-reload, но он пропустил следующую ошибку.

22:58:04 - ERROR - Could not load 'guard/rspec' or find class Guard::Rspec
22:58:04 - ERROR - /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/plugin_util.rb:100:in `require'
> [#] /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/plugin_util.rb:100:in `plugin_class'
> [#] /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/plugin_util.rb:57:in `initialize_plugin'
> [#] /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard.rb:167:in `add_plugin'
> [#] /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/dsl.rb:174:in `block in guard'
> [#] /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/dsl.rb:173:in `each'
> [#] /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/dsl.rb:173:in `guard'
> [#] /home/jitendra/milaap-webapp/Guardfile:4:in `_instance_eval_guardfile'
> [#] /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/guardfile/evaluator.rb:97:in `instance_eval'
> [#] /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/guardfile/evaluator.rb:97:in `_instance_eval_guardfile'
> [#] /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/guardfile/evaluator.rb:37:in `evaluate_guardfile'
> [#] /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/setuper.rb:148:in `evaluate_guardfile'
> [#] /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/setuper.rb:64:in `setup'
> [#] /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/commander.rb:24:in `start'
> [#] /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/cli.rb:107:in `start'
> [#] /home/jitendra/.rvm/gems/[email protected]/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
> [#] /home/jitendra/.rvm/gems/[email protected]/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
> [#] /home/jitendra/.rvm/gems/[email protected]/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
> [#] /home/jitendra/.rvm/gems/[email protected]/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
> [#] /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/bin/guard:6:in `<top (required)>'
> [#] /home/jitendra/.rvm/gems/[email protected]/bin/guard:23:in `load'
> [#] /home/jitendra/.rvm/gems/[email protected]/bin/guard:23:in `<main>'
> [#] /home/jitendra/.rvm/gems/[email protected]/bin/ruby_executable_hooks:15:in `eval'
> [#] /home/jitendra/.rvm/gems/[email protected]/bin/ruby_executable_hooks:15:in `<main>'
22:58:04 - ERROR - Invalid Guardfile, original error is:
> [#] undefined method `superclass' for nil:NilClass
/home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/plugin_util.rb:57:in `initialize_plugin': undefined method `superclass' for nil:NilClass (NoMethodError)
    from /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard.rb:167:in `add_plugin'
    from /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/dsl.rb:174:in `block in guard'
    from /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/dsl.rb:173:in `each'
    from /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/dsl.rb:173:in `guard'
    from /home/jitendra/milaap-webapp/Guardfile:4:in `_instance_eval_guardfile'
    from /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/guardfile/evaluator.rb:97:in `instance_eval'
    from /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/guardfile/evaluator.rb:97:in `_instance_eval_guardfile'
    from /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/guardfile/evaluator.rb:37:in `evaluate_guardfile'
    from /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/setuper.rb:148:in `evaluate_guardfile'
    from /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/setuper.rb:64:in `setup'
    from /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/commander.rb:24:in `start'
    from /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/lib/guard/cli.rb:107:in `start'
    from /home/jitendra/.rvm/gems/[email protected]/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
    from /home/jitendra/.rvm/gems/[email protected]/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
    from /home/jitendra/.rvm/gems/[email protected]/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
    from /home/jitendra/.rvm/gems/[email protected]/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
    from /home/jitendra/.rvm/gems/[email protected]/gems/guard-2.6.1/bin/guard:6:in `<top (required)>'
    from /home/jitendra/.rvm/gems/[email protected]/bin/guard:23:in `load'
    from /home/jitendra/.rvm/gems/[email protected]/bin/guard:23:in `<main>'
    from /home/jitendra/.rvm/gems/[email protected]/bin/ruby_executable_hooks:15:in `eval'
    from /home/jitendra/.rvm/gems/[email protected]/bin/ruby_executable_hooks:15:in `<main>'
4b9b3361

Ответ 1

Вот как я работаю с функцией загрузки:

1.) Получите gem

В вашем Gemfile:

group :development do
  gem 'guard-livereload', require: false
end

2.) guard init livereload, который будет генерировать Guardfile в корне вашего приложения.

3.) Открытие вашего Guardfile должно выглядеть следующим образом (Just Guard-Livereload, если вы запустите другие плагины защиты, убедитесь, что они ниже текущей загрузки.)

guard 'livereload' do
  watch(%r{app/views/.+\.(erb)$})
  watch(%r{app/helpers/.+\.rb})
  watch(%r{public/.+\.(css|js|html)})
  watch(%r{config/locales/.+\.yml})
  watch(%r{(app|vendor)(/assets/\w+/(.+\.(css|js|html|png|jpg))).*}) { |m| "/assets/#{m[3]}" }
end

4.) Получите приложение Chrome Livereload из Интернет-магазина Chrome

5.) Перезагрузите сервер и откройте отдельную вкладку и введите- > guard

6.). В браузере нажмите кнопку "Печенье", и он должен ее связать ( "Браузер подключен в закладке Guard" ).

Я написал это для других, которые могут наткнуться на тот же вопрос. Для вашего конкретного случая прочитайте # 3. Откройте защитный файл и убедитесь, что в первую очередь вызывается функция "перезагрузка".

Идите смотреть Railscast # 264 Guard

При работе с SSL функция загрузки в потоке не очень нравится.

Rack-Livereload - это аккуратный маленький камень, который вы можете добавить в свой проект, чтобы обойти проблемы с SSL. Драгоценный камень вставляет часть или промежуточное промежуточное звено в стойку и в основном подключается к приложению, предназначенному для загрузки в javascript, через существующий (и SSL) Rails-сервер.