Rails 4 + начальная загрузка, настройка ресурсов

Я пытаюсь настроить bootstrap на Rails4 с помощью bootstrap-sass и получаю эту известную ошибку:

Sprockets::FileNotFound - couldn't find file 'bootstrap'
  (in app/assets/javascripts/application.js:16):

Я пробовал следующее:

  1. twitter/bootstrap in application.js
  2. gem 'bootstrap-sass', '~> 3.1.0' находится за пределами групповых активов
  3. Также пробовал кучу других вещей в Интернете

Я потратил много времени, принимая различные предложения из других сообщений. Как систематически отлаживать это, как настроить bootstrap-sass?

ps: Также безуспешно пытался заставить twitter-bootstrap-rails работать.

Вот несколько файлов

приложение.js

//= require jquery
//= require jquery_ujs
//= require js-routes
//= require bootstrap
//= require_tree .
//= require bootstrap-slider

приложение.css.scss

 *= require jquery.ui.core
 *= require jquery.ui.theme
 *= require_self
 *= require bootstrap-slider
 *= require_tree .
 *= stub active_admin
*/

@import "bootstrap";

Gemfile

source 'https://rubygems.org'
ruby '2.0.0'
gem 'rails', '4.0.0'
gem 'sass-rails'
gem 'coffee-rails', git: 'git://github.com/rails/coffee-rails.git'
gem 'uglifier', '>= 1.0.3'
gem 'jquery-ui-rails'
gem 'font-awesome-sass'
gem 'less-rails'
gem 'therubyracer', :platform=>:ruby
#gem 'twitter-bootstrap-rails'
gem 'jquery-rails'
#gem 'jquery_mobile_rails'
gem 'js-routes'
gem 'cancan'
gem 'devise'
gem 'figaro'
gem 'haml-rails'
gem 'pg'
gem 'rolify'
gem 'sendgrid'
gem 'simple_form'
gem 'thin'
gem 'rake'

#To use db for storing cookies instead cookie-store
gem 'activerecord-session_store', github: 'rails/activerecord-session_store'

group :development do
  gem 'better_errors'
  #gem 'binding_of_caller', :platforms=>[:mri_19, :rbx]
  #Commenting out platforms part, because may be that's stopping this to be used on the dev machine'
  gem 'binding_of_caller'
  gem 'guard-bundler'
  gem 'guard-rails'
  gem 'guard-rspec'
  gem 'html2haml'
  gem 'quiet_assets'
  gem 'rb-fchange', :require=>false
  gem 'rb-fsevent', :require=>false
  gem 'rb-inotify', :require=>false

  # Required with Rails panel chrome extension. This Gem should come after better_errors gem
  gem 'meta_request'
end
group :development, :test do
  gem 'factory_girl_rails'
  gem 'rspec-rails'
  gem 'pry-byebug'
  gem 'pry-stack_explorer'
  gem 'pry-rails'
  gem 'pry-debugger'
end

group :test do
  gem 'capybara'
  gem 'database_cleaner'
  gem 'email_spec'
end

group :production do
  gem 'rails_12factor'
end

gem 'high_voltage'

#Linkedin Logins
gem "linkedin"
gem "omniauth"
gem "omniauth-linkedin"

gem "omniauth-facebook"

#postgres use hstore in active record
#gem 'activerecord-postgres-hstore'

gem 'state_machine'
gem "ruby-graphviz"


#payments
#gem 'stripe',:git => 'https://github.com/stripe/stripe-ruby'

#gem 'anjlab-bootstrap-rails', :require => 'bootstrap-rails', :github => 'anjlab/bootstrap-rails'

gem 'newrelic_rpm'

gem 'pgbackups-archive'

gem 'pg_search'

gem 'acts-as-taggable-on'

#gem 'activeadmin' , github: 'gregbell/active_admin'
gem "activeadmin", git: "https://github.com/gregbell/active_admin"

gem 'kaminari'
gem 'bootstrap-slider-rails'
gem 'bootstrap-sass', '~> 3.1.0'

person codeObserver    schedule 03.02.2014    source источник
comment
У меня точно такая же проблема при запуске rake assets:precompile, которая нужна для развёртывания Heroku.   -  person chech    schedule 10.02.2014


Ответы (8)


Установка Bootstrap Gem

1.) Добавьте Bootstrap Gem:

gem 'bootstrap-sass'

2.) Понимание файла Application.css app/assets/stylesheets/application.css

Application.css берет все остальные файлы в вашем каталоге /stylesheets и объединяет их при запуске вашего приложения.

3.) Создайте новый файл SCSS (app/assets/stylesheets/bootstrap_and_customization.css.scss)

@import 'bootstrap';

4.) Требуется JavaScript Bootstrap

...
//= require jquery
//= require jquery_ujs
//= require bootstrap <--
//= require turbolinks
//= require_tree .

5.) Ресурсы Rails

group :production do
  gem 'rails_12factor'
end

6.) Пакетная установка и перезапуск сервера

Это должно быть!

person Mini John    schedule 03.02.2014
comment
Это работает локально, но rake assets:precompile терпит неудачу с треском, что делает развертывание на Heroku невозможным. Искали в Интернете несколько часов, но безуспешно. - person chech; 10.02.2014
comment
С какой стати это может с треском провалиться на производстве, я довольно долго развертываю все свои проекты на Bootstrap. Какие у вас ошибки ?? - person Mini John; 14.06.2014
comment
На момент моего комментария драгоценный камень был сломан и не работал при развертывании. Может быть, это работает сейчас, я не ожидаю, что это будет сломано навсегда. Единственным решением было загрузить исходники начальной загрузки вручную. Также остерегайтесь всех других версий драгоценных камней, включая рельсы, и что в вопросе для этой темы также говорится, что он не работает, как и многие другие источники, которые я проверял. В любом случае, эта тема устарела, ее можно решить, загрузив исходники, и не стоит возрождать ИМО. - person chech; 15.06.2014

В одном из моих проектов (Rails 4.1) мне пришлось напрямую включать загрузчик (не sass). Возможно, это подскажет, как заставить работать Saas-версию. Итак, ниже приведены шаги для непосредственного включения начальной загрузки:

  1. Загрузите и извлеките загрузочный файл в Rails.root/vendor/assets/bootstrap.
  2. Создайте файл Rails.root/vendor/assets/javascripts/bootstrap.js с таким содержимым:

    //= require ../bootstrap/js/bootstrap.js

  3. Теперь самое главное, чтобы иконки работали. URL-адреса файлов шрифтов должны быть переопределены для шрифта Glyphicons Halflings. Также необходимо использовать помощник asset_path. Поэтому создайте файл Rails.root/vendor/assets/stylesheets/bootstrap.css.erb с таким содержимым.

/*
=require ../bootstrap/css/bootstrap.css
*/

@font-face {
    font-family: 'Glyphicons Halflings';

    src: url("<%= asset_path 'glyphicons-halflings-regular.eot' %>");
    src: url("<%= asset_path 'glyphicons-halflings-regular.eot?#iefix' %>") format('embedded-opentype'), url("<%= asset_path 'glyphicons-halflings-regular.woff2' %>") format('woff2'), url("<%= asset_url 'glyphicons-halflings-regular.woff' %>") format('woff'), url("<%= asset_path 'glyphicons-halflings-regular.ttf' %>") format('truetype'), url("<%= asset_path 'glyphicons-halflings-regular.svg#glyphicons_halflingsregular' %>") format('svg');
}
  1. Теперь требуется начальная загрузка в application.js и application.css

приложение.js

//= require bootstrap

приложение.css

 *= require bootstrap
  1. И, наконец, пусть конвейер ресурсов знает путь к шрифтам и дополнительные расширения для предварительной компиляции. В application.rb добавляем:
config.assets.paths << Rails.root.join("vendor", "assets", "bootstrap", "fonts")
config.assets.precompile += %w( *.eot *.svg *.ttf *.woff *.woff2 )

После этого RAILS_ENV=production rake assets:precompile должно показать, что он распознал файлы шрифтов и скопировал их в общедоступную папку ресурсов.

Затем, чтобы проверить, работает ли это в рабочей среде, включите обслуживание статических ресурсов (в файле production.rb: config.serve_static_assets = true) и RAILS_ENV=production rails.

person evgeny.myasishchev    schedule 18.04.2015

В итоге я использовал начальную загрузку с размещенного CDN.

      %link{href: "//netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css", rel: "stylesheet"}/
      %link{href: "//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css" , rel: "stylesheet"}/
      %link{href: "//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css", rel: "stylesheet"}/
person codeObserver    schedule 10.02.2014

У меня была точно такая же ошибка. Решение заключалось в изменении:

config/environments/production.rb

Линия

config.serve_static_assets = false

to

config.serve_static_assets = true

Я точно не знаю, что делает эта строка, но у моей рабочей группы была такая же проблема в проекте, и они изменили эту строку, и это сработало.

person user3294300    schedule 10.02.2014
comment
Это не очень хорошая идея. В этом случае статические ресурсы (не обрабатываемые Nginx или Apache) будут обслуживаться ruby. - person evgeny.myasishchev; 19.04.2015
comment
это плохая практика, потому что это убийца производительности, обслуживание статических ресурсов (config.serve_static_assets = true) предназначено только для разработки/тестирования - person Luca G. Soave; 14.08.2015

Попробуй это:

Откройте config/application.rb, добавьте следующую строку:

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

В файле config.ru добавьте

 require 'bootstrap-sass'

Переименуйте свой application.css.scss во что-то другое, например. custom_bootstrap.css.scss. Я понятия не имею, почему это имеет значение, но это было в моем случае.

Кроме того, насколько я понимаю, по умолчанию bootstrap-sass не требует добавления

  //require bootstrap

к вашему application.js. Видимо ломается какой-то функционал.

person CS Koh    schedule 23.05.2014

у меня была та же проблема: не удалось найти файл «bootstrap-sprockets» с типом «application/javascript». Единственным решением было прокомментировать в Gemfile gem «sass-rails», «~> 5.0» и добавить вместо него gem sass-rails', '>= 3.2'

надеюсь, это поможет другим участникам

person tzurcan    schedule 16.04.2016

Исправление для меня состояло из двух частей... сначала мой правильный список... но один только список не был исправлением!

gem 'sass-rails', '~> 5.0'
gem 'bootstrap-sass', '~> 3.3.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'

Затем у меня возникла проблема с gemfile.Lock... если кто-то еще не может загрузить файлы и не хочет использовать CDN... проверьте свой gemfile.Lock и посмотрите, какие версии скомпилированы из gemfile (одна является вводом для нас как разработчика, а другой - это то, что на самом деле запускается фреймворком - это вызовет проблемы, если вы попытаетесь изменить gemfile.lock).

Чтобы разрешить блокировку gemfile... закройте gemfile и gemfile.Lock

  1. Мне пришлось сначала удалить рассматриваемые элементы из «gemfile».
  2. Я сделал "gem install <name of gemfile>" для каждого из них.

Затем откройте gemfile и gemfile.Lock, чтобы проверить результаты. Обратите внимание, что вам все еще нужно выполнить все настройки начальной загрузки и т. Д., Требуемые для каждого из них. Также не помешает запустить rails assets:precompile.

Примечание. Ресурсы rails:precompile — это команда rails 5.

person Mirv - Matt    schedule 16.12.2016

добавить в гемфайл

драгоценный камень 'шрифт-потрясающие рельсы'

сделать пакетную установку

добавить в application.css

*= требуется потрясающий шрифт

и перезапустите сервер rails.

person Dhanshree    schedule 15.04.2017