57 votes

Comment extraire des assistants de vue Rails dans une gemme?

J'ai un set de rails aides de vue que j'utilise régulièrement, et tiens à les emballer dans un bijou, pour que je puisse mettre juste une ligne dans mon Gemfile, et ont les aides accessibles à partir de mon point de vue.

J'ai créé les gemmes avant d'utiliser le système de regroupement, et Bijoutier, cependant, je ne suis pas du tout clair du tout sur comment organiser les Rails aides de vue dans un bijou, et de les inclure dans les rails.

Je vous serais reconnaissant de tous les pointeurs, ou des liens vers la mise à jour des tutoriels sur la façon de le faire pour Rails 3

Merci

Juste pour clarifier: La question n'est pas sur "comment créer un bijou". Sa "façon d'emballer des aides de vue dans un bijou, donc je peux les utiliser dans les Rails"

Edit 2: Je suis également d'accord avec l'affiche ci-dessous.. Un moteur rails est waay trop excessif pour ce genre de (espérons-le simple)

97voto

Brandon Tilley Points 49142

À mon avis, un moteur complet est excessif pour cette tâche. Vous pouvez plutôt créer un Railtie qui inclut vos assistants dans ActionView :: Base lors de son initialisation.

 # lib/my_gem/view_helpers.rb
module MyGem
  module ViewHelpers
    def pre(text)
      content_tag :pre, text
    end

    def another_helper
      # super secret stuff
    end
  end
end

# lib/my_gem/railtie.rb
require 'my_gem/view_helpers'
module MyGem
  class Railtie < Rails::Railtie
    initializer "my_gem.view_helpers" do
      ActionView::Base.send :include, ViewHelpers
    end
  end
end

# lib/my_gem.rb
require 'my_gem/railtie' if defined?(Rails)
 

5voto

timsly Points 651

Aussi, si vous voulez inclure helper uniquement pour la version Rails3, vous pouvez utiliser

 # lib/my_gem.rb
require 'my_gem/railtie' if defined?(Rails::Railtie)
 

3voto

Mario Points 1707

Ce que vous recherchez probablement est un moteur . Un moteur est un joyau qui contient des éléments d'application de rails (en fait, une application de rails est elle-même un moteur.)

-3voto

bandola Points 110

avez-vous regardé l'épisode 245 de casting-rails? http://railscasts.com/episodes/245-new-gem-with-bundler

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X