5

J'utilise la dernière branche maîtresse de la gem bootstrap-rails et j'essaie de modifier les variables bootstrap par défaut d'une manière compatible avec le pipeline des ressources ferroviaires.Rails Asset Pipeline et Twitter Bootstrap Gem

Mon fichier de pierres précieuses a ces pierres précieuses inclus

gem 'twitter-bootstrap-rails', :git => 'git://github.com/seyhunak/twitter-bootstrap-rails.git' 
gem 'uglifier', '>= 1.0.3' 
gem 'less-rails-bootstrap' 

J'ai aussi inclus *= require bootstrap_and_overrides dans mon dossier application.css. Je suis conscient que les pignons compile chaque fichier css individuellement et par conséquent vous ne pouvez pas vous attendre à ce que plusieurs fichiers CSS soient capables de se référencer les uns les autres. Par conséquent, le fichier bootstrap_and_overrides.css.less comprend les éléments suivants:

@import "twitter/bootstrap/bootstrap"; 
body { padding-top: 80px; } 

//background-image: asset-url("background.png"); background-repeat:no-repeat; background-size: cover; } 

@import "twitter/bootstrap/responsive"; 

// Set the correct sprite paths 
@iconSpritePath: asset-path('twitter/bootstrap/glyphicons-halflings.png'); 
@iconWhiteSpritePath: asset-path('twitter/bootstrap/glyphicons-halflings-white.png'); 

// Set the Font Awesome (Font Awesome is default. You can disable by commenting below lines) 
@fontAwesomeEotPath: asset-path('fontawesome-webfont.eot'); 
@fontAwesomeWoffPath: asset-path('fontawesome-webfont.woff'); 
@fontAwesomeTtfPath: asset-path('fontawesome-webfont.ttf'); 
@fontAwesomeSvgzPath: asset-path('fontawesome-webfont.svgz'); 
@fontAwesomeSvgPath: asset-path('fontawesome-webfont.svg'); 

// Font Awesome 
@import "fontawesome"; 

// Your custom LESS stylesheets goes here 
// 
// Since bootstrap was imported above you have access to its mixins which 
// you may use and inherit here 
// 
// If you'd like to override bootstrap's own variables, you can do so here as well 
// See http://twitter.github.com/bootstrap/less.html for their names and documentation 
// 
// Example: 
// @linkColor: #ff0000; 

@navbarHeight: 60px; 
@navbarText: @white; 
@textColor: @orange; 
@navbarLinkColor: @white; 
@navbarBackground: darken(@linkColor, 15%); 
@navbarBackgroundHighlight: @linkColor; 

Cependant, aucun de mes remplacements travailler sous la conduite d'actifs. Ils fonctionnent bien sans cela. Quelqu'un sait pourquoi?

Mise à jour Mes actifs Gem Group

# Gems used only for assets and not required 
# in production environments by default. 
group :assets do 
    gem 'sass-rails', '~> 3.2.3' 
    gem 'coffee-rails', '~> 3.2.1' 
    gem 'less-rails' 
    # gem 'twitter-bootstrap-rails', :git => 'git://github.com/seyhunak/twitter-bootstrap-rails.git' 
    # See https://github.com/sstephenson/execjs#readme for more supported runtimes 
    gem 'therubyracer', :platform => :ruby 
    gem 'uglifier', '>= 1.0.3' 
end 
+0

avez-vous la pierre précieuse moins rails dans votre groupe d'actifs? – Swift

+0

Je fais, question mise à jour avec mon groupe d'actifs gem –

Répondre

6

Exécution rake assets:precompile localement avant le déploiement résolu mon problème ci-dessus.

3

Dans mon cas, le répertoire que les moteurs de pipeline d'actifs recherchent des ressources n'ont pas mis en place correctement, provoquer des actifs pas correctement compilés. J'utilise bootstrap-sass, donc votre situation pourrait être différente. Mais dans mon cas, l'ajout du code suivant à application.rb a résolu mon problème.

module ApplicationModuleName 
    class Application < Rails::Application 

    config.sass.load_paths = [] 
    config.sass.load_paths << "#{Rails.root}/app/assets/stylesheets" 
    %w(bootstrap-sass jstree-rails jquery-rails).each do |pkg| 
     config.sass.load_paths << "#{Gem.loaded_specs[pkg].full_gem_path}/vendor/assets/stylesheets" 
     config.assets.paths << "#{Gem.loaded_specs[pkg].full_gem_path}/vendor/assets/javascripts" 
    end 
    end 
end 

Essayez run rails console et vérifier la valeur de load_paths ou quelque chose comme ça avant d'appliquer les correctifs ci-dessus (laid) ..

+0

Les correctifs ci-dessus ne sont pas valides car 'sass' n'est pas un attribut de' config'. J'obtiens ces erreurs: '/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.3/lib/rails/railtie/configuration.rb:85:in method_missing: méthode non définie sass pour # (NoMethodError) ' –

+1

J'ai éliminé le module et le wrapper de classe sur le dernier message. Edité l'exemple correctement. – shigeya

+0

Merci de partager votre approche, même si j'ai résolu mon problème en lançant 'rake assets: precompile' localement avant le déploiement et tout a été corrigé. –

0

J'utilise moins d'amorçage avec des rails 4.1 et Ruby 2.0, mais je fixe en ajoutant à ce application.css.scss

*= require_tree . 
*= require bootstrap_and_overrides 
*= require_self 
Questions connexes