ruby on rails - rails - haml por defecto
haml vs html (6)
¿Hay alguna forma de configurar los rieles para usar haml de manera predeterminada? Es decir, cuando se genera un andamio, se genera el nombre de scaffold_name/index.html.haml
correspondiente en lugar de scaffold_name/index.html.erb
.
De forma similar a cómo puede agregar config.sass.preferred_syntax = :sass
a config/application.rb
y se ha generado scaffold_name.sass
de forma predeterminada.
Intenté agregar lo siguiente a config/application.rb
config.generators do |g|
g.template_engine :haml
end
pero en marcha con lo siguiente
$ rails generate scaffold foo name:string
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
¡Creé un comando pequeño y agradable para reemplazar todos los archivos erb con archivos haml después de this screencast pero todavía estoy interesado en hacerlo por defecto cuando se crea el andamio! ¿Cómo puedo hacer que los archivos haml (no erb!) Se generen de forma predeterminada?
¡Esto es bastante simple!
Todo lo que necesita hacer es agregar lo siguiente a su Gemfile:
gem ''haml''
gem ''haml-rails''
y luego ejecute bundle install
El haml [not found]
es generalmente porque el paquete está incompleto. ¿Ha intentado ejecutar la bundle update
y luego volver a ejecutar el generador?
En la configuración de su aplicación, intente configurar lo siguiente:
config.generators do |g|
g.template_engine :haml
end
Encontré que esta es la solución completa
Diga si tiene un proyecto de Rails Engine llamado rails_address
Agregue la configuración de haml a 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
Agregado haml deps a 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''
...
Por último, solicite las gemas haml en lib / rails_address.rb
require "rails_address/engine"
require "haml"
require "haml-rails"
module RailsAddress
end
Ejecute una bundle install
en caso de que aún no haya instalado las gemas haml.
Ahora, cuando genere a través de un andamio o un controlador, creará vistas de haml.
ex.
$ rails g scaffold Address street:string city:string state:string zip_code:string
...
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
...
Si tiene gemas ''haml-rails'' en su Gemfile, debería crear archivos haml por defecto en lugar de erb.
Yo uso gem ''haml-rails'', ''= 0.3.4''
en mi gemfile. genera automáticamente *.html.haml
sin ninguna configuración.