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

Невозможно заставить CSS работать на Heroku, используя Rails 4 с самонастраивающимся камнем

Я развернул приложение к Heroku с одной проблемой, о которой я не могу понять. CSS для приложения через Bootstrap-sass не загружается, поэтому у меня есть нестандартное приложение. На данный момент это всего лишь коллекция статических страниц.

В README я выполнил только один шаг https://github.com/thomas-mcdonald/bootstrap-sass Шаг, который я не могу понять и, скорее всего, буду моей проблемой как следует. Из-за изменения Rails, который не позволяет скомпилировать изображения в поставщике и lib, вам нужно добавить следующую строку в application.rb:

config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)

Поскольку я все еще очень новичок в программировании, первая проблема заключается в том, что я не знаю, где и как добавить это в файл application.rb. Я был бы очень признателен, если бы кто-нибудь помог мне показать, как и где правильно добавить вышеприведенную строку кода.

Вторая проблема может быть связана с драгоценными камнями, которые я использую, однако, когда я создал приложение, камень sass-rails был установлен с ~ > 4.0.0.beta1. Согласно README, версия для использования - 3.2. Так как это также может быть проблемой, я включил файл gem, если кто-либо определит, что является основной причиной моей проблемы.

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

Изменить: Чтобы добавить шаги, которые я предпринял при первой попытке, которые привели к правильной работе стиля на моем локальном хосте, но не один раз, когда код был развернут в heroku.

  • Создано новое приложение rails 4 (файл gem ниже)
  • Добавлен бутстр-сасс-камень, указанный в файле gem ниже
  • Добавил жемчужину PG к моему файлу gem в производственной группе и переместил SQLite3 на разработку и тестирование (была запущена установка пакета - без производства в соответствии с шагами 2 и 3).
  • создал контроллер страниц для статической домашней страницы
  • Добавлен h1 в блок героя на главной странице, чтобы увидеть, работает ли стиль.
  • добавил файл styles.css.scss и включил @import 'bootstrap'; в таблицу стилей
  • Создал репозиторий git, выполнил мой первоначальный коммит и нажал код на git
  • Создано приложение heroku и подтолкнуло мастера к герою

Во второй попытке я добавил навигационную панель на домашнюю страницу (если это имеет значение для всех) и повторил шаги 7 и 8, но перед выполнением этих шагов я выполнил следующую строку кода.

RAILS_ENV=production bundle exec rake assets:precompile

У меня все еще был сайт, который был подходящим для моего локального хоста, но на Heroku не было стиля. Как я уже отмечал выше в своем первоначальном посте, есть строка кода, которую нужно добавить в файл application.rb, который я не соблюдал из-за моего понимания того, как правильно добавить строку кода в файл.

Gemfile:

source 'https://rubygems.org'

ruby "2.0.0"

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.0.beta1'

group :production do
gem 'pg'
end

group :development, :test do
gem 'sqlite3'
end

# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails',   '~> 4.0.0.beta1'
gem 'coffee-rails', '~> 4.0.0.beta1'

gem 'bootstrap-sass', '~> 2.3.1.1'

# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

# Turbolinks makes following links in your web application faster. Read more:  https://github.com/rails/turbolinks
gem 'turbolinks'

# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 1.0.1'

# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'

# Use unicorn as the app server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano', group: :development

# To use debugger
# gem 'debugger'
4b9b3361

Ответ 1

Я только сейчас (13 июня 2013 года) получил этот ответ от разработчиков Heroku, чья поддержка провела меня через барьеры. Вот как я получил свой css-дисплей от localhost, работающего в моем приложении Heroku.

"Все, что вам нужно сделать, - включить актив, служащий в производстве, и установить регистратор на stdout, чтобы заставить Rails4 работать на Heroku. В настоящее время мы работаем над сглаживанием процесса развертывания приложений Rails 4, но пока что вы может просто изменить эти строки в вашем коде, и вам не нужны эти драгоценные камни". (Спасибо Брет и Нил отличные новости)

В/config/environment/production. набор:

config.cache_classes = true
config.serve_static_files = true
config.assets.compile = true
config.assets.digest = true

Я не знаю о stdout в журнале, поэтому не могу этого проверить.

Сделайте git add. и git commit.

Убедитесь, что /config/database.yml имеет:

production:
  adapter: postgresql
  encoding: unicode
  database: Your_appname_production

Вам понадобится эта информация для команды env ниже.

Удостоверьтесь, что у вас есть gem 'pg' для создания в вашем Gemfile Сделайте еще один git commit.

Запустите эту команду в терминале в приложении в одной строке:

env RAILS_ENV=production DATABASE_URL=postgresql://user:[email protected]/Your_app_name_production bundle exec rake assets:precompile 2>&1

Где DATABASE_URL = postgresql идентичен вашему производственному адаптеру в файле yml и Your_app_name_production указано, потому что Heroku только запускает производство.

Мне посоветовали и не нуждались:

group :production do
  gem 'rails_log_stdout',           github: 'heroku/rails_log_stdout'
  gem 'rails3_serve_static_assets', github: 'heroku/rails3_serve_static_assets'
end

Это ошибки в установке пакета и Heroku.

Не знаю, помогает ли это, но я также добавил производство для

Bundler.require(*Rails.groups(assets: %w(development test production)))

Не помню, где я видел этот совет.

НТН Арел

Ответ 2

Просто запустите bundle exec rake assets:precompile, прежде чем нажимать на герою

Ответ 3

Я смог исправить эту проблему, добавив эти два камня в мое приложение

group :production do
  gem 'rails_log_stdout',           github: 'heroku/rails_log_stdout'
  gem 'rails3_serve_static_assets', github: 'heroku/rails3_serve_static_assets'
end

Добавьте это, запустите bundle install, а затем нажмите на герою.

Ваши стили должны начинаться с загрузки.

Ответ 4

Прежде всего, обновите бета-версию Rails до последней версии.

Проверьте, где вы можете установить config.assets.initialize_on_precompile = false, поскольку это может привести к тому, что оно вернется к разрешению активов без звездочек (я предполагаю, что вы могли бы установить значение false при чтении о Rails 3.x на документах heroku).

Установите значение по умолчанию true

ruby config.assets.initialize_on_precompile = true

Затем включите user-env-compile для приложения на heroku:

# Enable precompile support for the app
heroku labs:enable user-env-compile
# Remove precompiled assets
rm -rf public/assets/
git add -u 
git commit -m 'Remove precompiled assets'
# Now push and everything should just work from now on
git push heroku master

Адаптировано из этого комментария к вопросу о загрузке-загрузке.

Ответ 6

config.cache_classes = true
config.serve_static_assets = true
config.assets.compile = true
config.assets.digest = true

установка этих параметров в config/envirnoments/production.rb исправила аналогичную проблему для меня с сервером apache

Ответ 7

Я бы не установил config.assets.compile = true, это повлияло на производительность (но оно работает).

Как указано здесь: fooobar.com/questions/147614/...

When using the asset pipeline, paths to assets must be re-written and sass-rails provides -url and -path helpers (hyphenated in Sass, underscored in Ruby) for the following asset classes: image, font, video, audio, JavaScript and stylesheet.

image-url("rails.png") becomes url(/assets/rails.png)
image-path("rails.png") becomes "/assets/rails.png"
The more generic form can also be used but the asset path and class must both be specified:

asset-url("rails.png", image) becomes url(/assets/rails.png)
asset-path("rails.png", image) becomes "/assets/rails.png"

Ответ 8

Простой причиной этой героической проблемы может быть смешение типов файлов css. По моему собственному опыту это происходит, если вы выталкиваете папку с ресурсами, содержащую файлы типа .css и .scss. Может быть, кто-то еще может объяснить, почему это происходит... но все, что мне понадобилось, это переименовать .css файл в .scss. Затем все было правильно составлено, и все было правильно в мире.