Не удалось найти файл 'twitter / bootstrap' в Production

17

Я использую Bootstrap от Twitter, переведенный в файлы SCSS. Он работает в локальной разработке, но когда я прекомпилирую и нажимаю на Heroku (используя стек Cedar), я получаю следующее:

> Started GET "/" for 74.57.16.130 at 2012-01-28 17:16:36 +0000 
> Processing by StaticPagesController#home as HTML  Rendered
> static_pages/home.html.erb within layouts/application (0.7ms) 
> Completed 500 Internal Server Error in 4ms
> 
>  ActionView::Template::Error (couldn't find file 'twitter/bootstrap'  
> (in /app/app/assets/stylesheets/application.scss.css:11)):
>      8: </head>
>      6:   <%= javascript_include_tag "application" %>
>      4:   <title><%= full_title(yield(:title)) %></title>
>      2: <html>
>      5:   <%= stylesheet_link_tag    "application", :media => "all" %>        
app/views/layouts/application.html.erb:5:in
> '_app_views_layouts_application_html_erb___288948710373692320_32137840'
>      3: <head>    cache: [GET /] miss
> 
>      7:   <%= csrf_meta_tags %>  cache: [GET /favicon.ico] miss

Я использую Rails 3.2.0, приложение работало на Heroku, пока я не добавил файлы SASS.

    
задан johncho 28.01.2012 в 18:51
источник
  • Можете ли вы показать мне ваш application.css в папке app / assets / js –  nodrog 28.01.2012 в 20:31
  • все, что у него есть в файле: * = требует twitter / bootstrap –  johncho 28.01.2012 в 22:01
  • Спасибо всем за вашу помощь. –  johncho 09.02.2012 в 16:02

6 ответов

27

Вы используете драгоценный камень? Убедитесь, что ваш драгоценный камень не входит в группу активов и доступен в производстве.

Из GemFile

# Gems used only for assets and not in production environments by default.

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

    
ответ дан mike 04.02.2012 в 00:53
  • Из того, что я понял, я подумал, когда я запустил команду precompile, чтобы он скомпилировал все файлы SASS в один файл CSS. Разве это не так? (Я так новичок в этом, но люблю его) –  johncho 06.02.2012 в 20:42
  • Я не думаю, что SASS из драгоценного камня, который вы используете, предварительно скомпилирован, я не уверен, в любом случае. –  mike 08.02.2012 в 20:27
  • Я думаю, вы нашли ответ. Большое спасибо. –  johncho 09.02.2012 в 16:02
  • @mike вы бог! Если бы я мог увеличить это 1000 раз. _ / _ –  shivam 26.06.2015 в 21:50
4

Просто поместите это в свой гемфайл

gem "twitter-bootstrap-rails", "~> 2.0rc0"

В BootStrap 2.0 есть недопустимый CSS, который приводит к сбою компиляции SCSS

Вы можете убедиться в этом, посмотрев на вывод

git push heroku master 

Вы должны увидеть какую-то ошибку вроде:

-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       rake aborted!
       Invalid CSS after "...er-radius:0 %pr_e%/": expected expression (e.g. 1px, bold), was ";}"
       (in /tmp/build_1k8ugei34dpcw/app/assets/stylesheets/application.css)

       Tasks: TOP => assets:precompile:primary
       (See full trace by running task with --trace)
       Precompiling assets failed, enabling runtime asset compilation
       Injecting rails31_enable_runtime_asset_compilation
       Please see this article for troubleshooting help:
       http://devcenter.heroku.com/articles/rails31_heroku_cedar#troubleshooting
    
ответ дан Doug 02.02.2012 в 18:36
  • Спасибо, я попробую это. –  johncho 02.02.2012 в 22:16
3

В config/environments/production.rb добавьте эту строку:

config.assets.precompile = [/^[-_a-zA-Z0-9]*\..*/]

Я думаю, это не добавление всех ваших активов.

    
ответ дан Mitch Dempsey 29.01.2012 в 21:39
  • Я пробую это, когда вернусь домой. Спасибо. Является ли это обычной (лучшей) практикой? –  johncho 30.01.2012 в 15:25
  • @JohnCho Я понятия не имею. Я просто знаю, что когда я добавил больше javascript-файлов, мой компилятор в производстве полностью игнорировал их, и мне пришлось добавить эту строку. –  Mitch Dempsey 30.01.2012 в 21:47
  • Я пробовал это сегодня утром, изменил файлы, побежал прекомпилировать, а затем нажал на герою, все прошло нормально, но у меня все еще есть те же ошибки в журнале. знак равно –  johncho 31.01.2012 в 12:47
  • @JohnCho Что такое twitter / bootstrap? это файл? Это папка? –  Mitch Dempsey 31.01.2012 в 20:03
  • Это файл SCSS, который импортирует все остальные файлы SCSS в порядке (и он работает так, как должен в разработке). Я собираюсь попробовать импортировать через подстановочный знак сегодня, и посмотреть, работает ли это в Production, тогда я узнаю, связано ли это с тем, как вещи импортируются. Я немного схватываюсь за соломинку. –  johncho 31.01.2012 в 21:23
Показать остальные комментарии
2

это решило проблему в героку как минимум

просто перейдите на sass-rails 3.1.4

group :assets do
  gem 'coffee-rails', '~> 3.1.1'
  gem 'uglifier', '>= 1.0.3'
  gem 'sass-rails', '3.1.4'
  gem 'bootstrap-sass', '~> 2.0.2'
end
    
ответ дан Siddhartha Mukherjee 19.06.2012 в 17:09
0

Когда вы видите что-то подобное при развертывании приложения rails на heroku.com

Precompiling assets failed, enabling runtime asset compilation
...
could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port xxxx?

Просто добавьте это в config / application.rb

config.assets.initialize_on_precompile = false
    
ответ дан Lewy 09.04.2013 в 16:45
0

Убедитесь, что в config / средах / production.rb у вас есть ...

config.serve_static_assets = true
    
ответ дан brntsllvn 12.10.2015 в 01:57