Heroku на Ubuntu 14.04

#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», поэтому пришлось вернуться. У меня явно происходит какая-то путаница с версиями.