Forum: Italian Ruby user group Scaffold templates in Rails Engine

6f8382c757ca1573eaf7b61a807800ce?d=identicon&s=25 Iwan Buetti (Guest)
on 2014-03-07 16:14
(Received via mailing list)
Ciao a tutti,
Ho creato una Rails engine per metterci un po' di codice, tra cui delle
viste personalizzate per lo scaffold (per intenderci quelle che in una
app Rails vanno in lib/templates/haml/scaffold/), che poi riutilizzo in
varie app.
Tuttavia non trovo il modo di fare caricare quelle viste custom alla app
che include la mia engine Sancho: continua ad utilizzare quelle di
default.

Ecco il contenuto di lib/sancho/engine.rb:
module Sancho
  class Engine < ::Rails::Engine
    isolate_namespace Sancho

    initializer :add_generator_templates do
      config.generators.templates.unshift(File::expand_path('../templates',
__FILE__))
    end
 end
end

Sono stato chiaro?
Qualche idea?

Grazie mille, as usual,

iwan
Eff93e9bbe063b7136c9b6f218071a09?d=identicon&s=25 Marco Mastrodonato (marcomd)
on 2014-03-12 09:22
Ti serve un generatore:

http://guides.rubyonrails.org/generators.html

Seguendo quella guida non avrai problemi, in piĆ¹ ti aggiungo qualche
indicazione su come ho creato il mio.
Ho creato una classe ScaffoldGenerator ma con i miei puntamenti:
controller e template

#lib/rails/sancho/sancho_generator.rb
module Rails
  module Generators
    class SanchoGenerator < ::Rails::Generators::ScaffoldGenerator

      remove_hook_for :scaffold_controller
      hook_for :sancho_controller, :required => true

    end
  end
end

#lib/rails/sancho_controller/sancho_controller_generator.rb
module Rails
  module Generators
    class SanchoControllerGenerator <
::Rails::Generators::ScaffoldControllerGenerator
      # customize
    end
  end
end

#lib/erb/sancho/sancho_generator.rb
module Erb
  module Generators
    class SanchoGenerator <  ::Erb::Generators::ScaffoldGenerator
      # customize
    end
  end
end


Prima di poter utilizzare un nuovo generatore devi definirlo nella tua
applicazione

#config/application.rb
module YourApp
  class Application < Rails::Application
    config.generators do |g|
      g.sancho_controller   :sancho_controller
    end

    ...

  end
end
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.