Domanda

Sto lavorando sulla creazione di miei primi Rails 3 motore e sto attualmente ottenendo il seguente messaggio di errore

is a Railtie/Engine and cannot be installed as plugin (RuntimeError)

Per darvi un po 'più di fondo non sto facendo il motore come un gioiello, ma ho posto i file per i cognomi nel plugins cartella vendor /. So che c'è un problema con il carico quando nei plugin cartella, ma io non sono chiare su come risolvere il problema.

Il mio rotaie / file di init.rb nel motore ha il seguente codice

require 'rails'

module RailsApp
  module MyEngine
    class Engine < Rails::Engine

      config.after_initialize do
        RailsApp::GameType.register do |game_type|
          game_type.name = "TreasureIsland"
          game_type.version = "0.1"
          game_type.thumbnail = "teasure_island.jpg"
        end
      end
    end
  end
end

Suggerimenti?

È stato utile?

Soluzione

Credo di ricordare di aver letto che Railties non avrebbe funzionato nella directory dei plugin, perché sono destinati ad essere caricati in un punto diverso del processo di avvio dell'applicazione. Mi sento di raccomandare la creazione di un gioiello usando qualcosa come gioielliere, che non c'era molta parte del lavoro per voi. Lo scopo del Railtie / motore è di avere un componente riutilizzabile che può essere incluso in Rails applicazioni multiple. Una volta che hai un gioiello creato, si può puntare al percorso gioiello locale all'interno del vostro Gemfile. Questo ti permette di vedere i cambiamenti nel codice del motore all'interno della vostra applicazione Rails senza dover costruire e reinstallare la gemma ogni volta che si apporta una modifica al codice del motore. Naturalmente si vorrebbe punto bundler alla gemma installata in produzione. Suggerirei di metterlo sul github e l'utilizzo di tale URL nella tua Gemfile in produzione.

Bundler esempio gioiello locale:

#Gemfile
gem "my_engine", :require => "my_engine", :path => "/my_engines/my_engine"

Controlla il sito web del Rubyist moderna. Ha una buona serie sulla creazione di Railties e motori. Ci può essere stato alcune modifiche al Rails dal momento che questo è stato scritto, ma penso che la maggior parte è ancora rilevante. Mi ha aiutato un bel po ', quando stavo imparando come scrivere Motori con Rails 3.

http://www.themodestrubyist.com/2010/03/01/rails-3-plugins---part-1---the-big-picture/
http : //www.themodestrubyist.com/2010/03/05/rails-3-plugins---part-2---writing-an-engine/
http://www.themodestrubyist.com/2010/03/16/rails-3-plugins---part-3---rake-tasks-generators-initializers-oh-my/
http : //www.themodestrubyist.com/2010/03/22/rails-3-plugins---part-4---more-on-generators/

Altri suggerimenti

John, credo che i motori (che sono tipicamente gemme) vs plugin (che vivono in vendor) vengono caricati in diversi punti i binari processo di inizializzazione.

Motori realtà hanno un po 'più di flessibilità, possono agganciare più in profondità rotaie. Inoltre, il confezionamento come una gemma ha un sacco di vantaggi:. Più facile condividere attraverso applicazioni, più facile da mantenere in un repo codice separato, più facile il controllo di versione

Sto creando il mio primo motore di rotaie in questo momento e ha creato un punto di partenza utile e walk-through per iniziare:

http://keithschacht.com/creating-a-rails -3-motore-plugin-gioiello /

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top