web-dev-qa-db-de.com

haml standardmäßig

Gibt es eine Möglichkeit, Rails für die Verwendung von haml standardmäßig zu konfigurieren, d. H. Wenn ein Gerüst erstellt wird, wird der entsprechende scaffold_name/index.html.haml anstelle von scaffold_name/index.html.erb generiert. 

Ähnlich wie Sie config.sass.preferred_syntax = :sass zu config/application.rb hinzufügen können und standardmäßig scaffold_name.sass generiert haben.

Es wurde versucht, Folgendes zu config/application.rb hinzuzufügen.

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

aber folgte mit dem folgenden

$ 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

Ich habe den Befehl Nice little bundle erstellt, um alle erb durch haml-Dateien nach this screencast zu ersetzen, aber ich bin immer noch daran interessiert, es als Standard festzulegen, wenn das Gerüst erstellt wird! Wie mache ich es, so dass Haml-Dateien (nicht erb!) Standardmäßig erzeugt werden?

44
rudolph9

Ich verwende gem 'haml-Rails', '= 0.3.4' in meinem gemfile. es generiert automatisch *.html.haml ohne Konfiguration.

67
raymondralibi

Versuchen Sie in Ihrer Anwendungskonfiguration Folgendes festzulegen:

config.generators do |g|
  g.template_engine :haml
end
13
Nick Veys

wenn Sie gem 'haml-Rails' in Ihrer Gemfile-Datei haben, sollten Sie in der Standardeinstellung Haml-Dateien anstelle von erb erstellen.

8
munna_1

Das ist ziemlich einfach!

Alles, was Sie tun müssen, ist, Ihrer Gemfile folgendes hinzuzufügen:

gem 'haml'
gem 'haml-Rails'

und dann bundle install ausführen

6
karlingen

Ich habe festgestellt, dass dies die vollständige Lösung ist 

Sagen Sie, wenn Sie ein Rails Engine-Projekt mit dem Namen Rails_address haben.

Fügen Sie die haml config zu lib/Rails_address/engine.rb hinzu.

module RailsAddress
  class Engine < ::Rails::Engine
    isolate_namespace RailsAddress

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

Haml deps zu Rails_address.gemspec hinzugefügt

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

Schließlich benötigen Sie die Haml-Edelsteine ​​in lib/Rails_address.rb

require "Rails_address/engine"
require "haml"
require "haml-Rails"

module RailsAddress
end

Führen Sie einen bundle install aus, nur wenn Sie die Haml-Edelsteine ​​noch nicht installiert haben.

Wenn Sie jetzt über Gerüst oder Controller generieren, erstellen Sie Haml-Ansichten.

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
...
1
cevaris

Der haml [not found]-Fehler liegt in der Regel daran, dass das Bundle unvollständig ist. Haben Sie versucht, bundle update auszuführen und dann den Generator erneut auszuführen?

0
Emil Kampp