#ruby-on-rails #ruby #heroku #gem #ubuntu-14.04
#ruby-on-rails #ruby #heroku #драгоценный камень #ubuntu-14.04
Вопрос:
В настоящее время я следую «Учебному пособию по Ruby on Rails» Майкла Хартла. В главе 3, когда я пытаюсь развернуть рабочий образец приложения с Heroku, он отклоняется, и, хотя я полностью понимаю сообщение об ошибке, я не знаю, как его исправить. Вот мой Gemfile:
source 'https://rubygems.org'
ruby '2.0.0'
#ruby-gemset=railstutorial_rails_4_0
gem 'rails', '4.0.5'
group :development, :test do
gem 'sqlite3', '1.3.8'
gem 'rspec-rails', '2.13.1'
end
group :test do
gem 'selenium-webdriver', '2.35.1'
gem 'capybara', '2.1.0'
end
gem 'sass-rails', '4.0.1'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.1'
gem 'jquery-rails', '3.0.4'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'
group :doc do
gem 'sdoc', '0.3.20', require: false
end
group :production do
gem 'pg', '0.15.1'
gem 'rails_12factor', '0.0.2'
end
И вот файл, в котором возникает проблема, который является config/environments/development.rb:
SampleApp::Application.configure do
# Settings specified here will take precedence over those in config/application.rb.
# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
# since you don't have to restart the web server when you make code changes.
config.cache_classes = false
# Do not eager load code on boot.
config.eager_load = false
# Show full error reports and disable caching.
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
# Don't care if the mailer can't send.
config.action_mailer.raise_delivery_errors = false
# Print deprecation notices to the Rails logger.
config.active_support.deprecation = :log
# Raise an error on page load if there are pending migrations.
config.active_record.migration_error = :page_load
# Debug mode disables concatenation and preprocessing of assets.
# This option may cause significant delays in view rendering with a large
# number of complex assets.
config.assets.debug = true
# Adds additional error checking when serving assets at runtime.
# Checks for improperly declared sprockets dependencies.
# Raises helpful error messages.
config.assets.raise_runtime_errors = true
# Raises error for missing translations
# config.action_view.raise_on_missing_translations = true
end
Ошибки, которые я получаю, связаны с попыткой «git push heroku master»:
Running: rake assets:precompile
rake aborted!
NoMethodError: undefined method `configure' for #<SampleApp::Application:0x007fc7f03f7298>
и после длинного списка путей я получаю:
!
! Precompiling assets failed.
!
! Push rejected, failed to compile Ruby app
To git@heroku.com:some-name.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:some-name.git'
Есть идеи, как это исправить, пожалуйста? Я действительно хотел бы, чтобы развертывания работали под Ubuntu.
Спасибо!
Ответ №1:
По умолчанию Rails 4 не будет обслуживать ваши ресурсы. Чтобы включить эту функцию, вам нужно зайти в config/application.rb и добавить эту строку:
config.serve_static_assets = true
Также ознакомьтесь с этой документацией по heroku — https://devcenter.heroku.com/articles/rails-4-asset-pipeline
Надеюсь, это поможет. 🙂
Комментарии:
1. Спасибо за ваш ответ, я был направлен на эту страницу раньше, но это не сработало. Я все еще получаю то же сообщение об ошибке.
2. Извините, что это не помогло. Взгляните на мой репозиторий, который я недавно создал, и знайте, что он работает на heroku — github.com/hsuh/nihongo . Это немного отличается от руководства по Hartl, потому что я пытаюсь заставить Angularjs работать на Heroku. Вот рабочая страница — nameless-harbor-8868.herokuapp.com
3. Спасибо за ссылку на репозиторий, я рассмотрю это. 🙂
Ответ №2:
Рельсы 4
Проблема является общей проблемой с Hartl
учебным пособием — она возникает из-за использования Rails 3
в учебном пособии, а более поздняя версия широко используется в настоящее время
Я пытался найти ссылки на это, но не смог. Я уже где-то находил их раньше — буду искать вас по-другому.
В Rails 4
любом случае, вам нужно это (у нас есть это в наших приложениях Rails 4):
#config/environments/development.rb
Rails.application.configure do
Это устанавливает блок кода configure для правильного объекта. Я думаю, что Rails изменил некоторые из своих основных функций в версии 4.0 , поэтому сейчас у вас возникает проблема
Комментарии:
1. Вам тоже спасибо. Я изменил development.rb, как было предложено, и это нарушило возможность запуска сервера с помощью «rails s», поэтому пришлось вернуться. У меня явно происходит какая-то путаница с версиями.