haml par défaut

Existe-t-il un moyen de configurer les rails pour qu’ils utilisent haml par défaut, c.-à-d. Qu’un scaffold_name/index.html.haml est généré à la place de scaffold_name/index.html.erb quand un échafaudage est généré.

Semblable à la façon dont vous pouvez append config.sass.preferred_syntax = :sass à config/application.rb et avoir scaffold_name.sass généré par défaut.

J’ai essayé d’append ce qui suit à config/application.rb

 config.generators do |g| g.template_engine :haml end 

mais avec les suivants

 $ rails generate scaffold foo name:ssortingng invoke active_record create db/migrate/20120208152550_create_foos.rb create app/models/foo.rb invoke test_unit create test/unit/foo_test.rb create test/fixtures/foos.yml route resources :foos invoke scaffold_controller create app/controllers/foos_controller.rb error haml [not found] invoke test_unit create test/functional/foos_controller_test.rb invoke helper create app/helpers/foos_helper.rb invoke test_unit create test/unit/helpers/foos_helper_test.rb invoke assets invoke coffee create app/assets/javascripts/foos.js.coffee invoke sass create app/assets/stylesheets/foos.css.sass invoke sass identical app/assets/stylesheets/scaffolds.css.sass $ rails destroy scaffold foo invoke active_record remove db/migrate/20120208152550_create_foos.rb remove app/models/foo.rb invoke test_unit remove test/unit/foo_test.rb remove test/fixtures/foos.yml route resources :foos invoke scaffold_controller remove app/controllers/foos_controller.rb error haml [not found] invoke test_unit remove test/functional/foos_controller_test.rb invoke helper remove app/helpers/foos_helper.rb invoke test_unit remove test/unit/helpers/foos_helper_test.rb invoke assets invoke coffee remove app/assets/javascripts/foos.js.coffee invoke sass remove app/assets/stylesheets/foos.css.sass invoke sass 

J’ai créé une jolie petite commande de bundle pour remplacer tous les fichiers erb par des fichiers haml à la suite de ce screencast mais je suis toujours intéressé à le rendre par défaut lors de la création de l’échafaudage! Comment puis-je le faire afin que les fichiers haml (pas erb!) Sont générés par défaut?

J’utilise gem 'haml-rails', '= 0.3.4' dans mon fichier gemfile. Il génère automatiquement *.html.haml sans aucune configuration.

Dans votre configuration d’application, essayez de définir les parameters suivants:

 config.generators do |g| g.template_engine :haml end 

Si vous avez gem ‘haml-rails’ dans votre Gemfile, il devrait créer des fichiers haml par défaut au lieu de erb.

C’est assez simple!

Tout ce que vous devez faire est d’append ce qui suit à votre Gemfile:

 gem 'haml' gem 'haml-rails' 

puis exécutez l’ bundle install

J’ai trouvé que c’était la solution complète

Dites si vous avez un projet Rails Engine nommé rails_address

Ajoutez la configuration haml à lib / rails_address / engine.rb

 module RailsAddress class Engine < ::Rails::Engine isolate_namespace RailsAddress config.generators do |g| g.template_engine :haml end end end 

Ajout de fichiers haml à rails_address.gemspec

 ... s.add_dependency "rails", "~> 4.1.10" s.add_dependency 'haml', '~> 4.0.6' s.add_dependency 'haml-rails', '~> 0.9.0' ... 

Enfin, utilisez les gems haml dans lib / rails_address.rb

 require "rails_address/engine" require "haml" require "haml-rails" module RailsAddress end 

Exécutez une bundle install juste au cas où vous n’auriez pas encore installé les gems haml.

Maintenant, lorsque vous générez via un échafaudage ou un contrôleur, vous allez créer des vues haml.

ex.

 $ rails g scaffold Address street:ssortingng city:ssortingng state:ssortingng zip_code:ssortingng ... invoke haml exist app/views/rails_address/addresses create app/views/rails_address/addresses/index.html.haml create app/views/rails_address/addresses/edit.html.haml create app/views/rails_address/addresses/show.html.haml create app/views/rails_address/addresses/new.html.haml create app/views/rails_address/addresses/_form.html.haml ... 

L’ haml [not found] est généralement due au fait que le bundle est incomplet. Avez-vous essayé de bundle update et de réexécuter le générateur?