2013-06-18 16 views
6

Ember & Rails newb qui con una seria domanda su entrambi.Progetto rotaie come motore montabile?

Sto costruendo un progetto che sfrutta la configurazione brace-rails come esemplificato qui: https://github.com/dgeb/ember_data_example

Tuttavia, per rendere le cose ancora più complicate, il progetto è destinato ad essere confezionato come un gioiello, per l'inclusione in un app più grande A tal fine ho creato un motore montabile, contenente un progetto fittizio per i test.

Il problema è che le rotaie e, in particolare, i manubri non sono in grado di trovare i modelli nella posizione prevista. Ciò impedisce a molte funzionalità di funzionare correttamente.

In termini di spostare la directory manubrio modello, ho trovato una soluzione qui: How can I specify an alternative directory for my HandlebarsJS templates with the ember-rails gem?

In sintesi si afferma possiamo specificare il percorso dei modelli in application.rb impostando il valore di config.handlebars.templates_root

Tuttavia, penso che questo causerà un conflitto nel caso in cui un altro motore di rotaie ember- debba essere caricato in un'app più grande .. e quello avrà bisogno delle proprie impostazioni di configurazione.

Qualcuno ha esperienza con queste configurazioni, e c'è un modo per rendere piacevole un'app ember con spazio dei nomi in un contesto più ampio?

A proposito, si tratta di binari 4 che eseguono le ultime bacchette di legno su Ruby 1.9.2.

risposta

7

Dopo aver fatto un sacco di ricerche, sembra che Ember supporta sovrascrivendo il default Resolver: http://emberjs.com/api/classes/Ember.DefaultResolver.html

È possibile indicare per guardare per i modelli nell'applicazione namespace seguendo le istruzioni qui: https://github.com/emberjs/ember.js/pull/2354

In sostanza, un resolver può essere aggiunto alla tua Ember.Application.create(): (per citare @lukemelia nella citata richiesta di pull)

App1 = Ember.Application.create({ 
    resolver: Ember.DefaultResolver.extend({ 
     resolveTemplate: function(parsedName) { 
      parsedName.fullNameWithoutType = "app1/" + parsedName.fullNameWithoutType; 
      return this._super(parsedName); 
     } 
    }) 
}); 

Questa sembra essere una parte di emb er rc5 al momento della scrittura.

1

Ho appena creato un'app ember all'interno di un motore rotaie e ho avuto gli stessi problemi con il supporto del manubrio. Non sono riuscito a far funzionare le rotaie di rame all'interno di un motore, quindi ho guardato il sorgente di ember-rails e alla fine ho registrato solo manubri con inclinazione nel mio motore direttamente. Ci sono alcune configurazioni all'interno di ember-rails per modificare il percorso del modello radice: handlebars.templates_root. Tuttavia non ho avuto successo nel farlo funzionare in un motore di rotaie.

https://github.com/andrewmp1/spree_outlet

ancora non ho davvero grokked come farei test di integrazione w/app manichino. Ma sta arrivando.

0

Questo è uno old ember app and also a rails engine. Utilizza gemma ember-rails in base alla voce gemfile. Potresti voler controllare. Guardalo montato su un'app per rotaie qui: ember-cart-example. Inoltre, ecco lo online demo of the mounted rails engine inside the rails app.

+1

Sembra che stanno definendo manualmente ogni vista, che è esattamente la situazione che si vuole evitare: cioè templateName: ' ember_cart/templates/carrelli/mini_cart_list ' –

+0

Sì hai ragione. – brg

+0

@alex ha risolto il codice che hai incollato per te. Se lo facesse, potresti voler accettare la tua risposta, in modo che in futuro, chiunque sia presente in Google, saprà cosa ha funzionato. – brg

0

C'è un'altra soluzione per questo: non è molto efficiente ma è semplice e funzionerà per questo caso (ember come motore all'interno dell'app rails). Inizia creando un inizializzatore nel tuo motore. Non c'è una directory di inizializzatori nella directory di configurazione del motore, ma è possibile crearne uno e gli inizializzatori inseriti funzioneranno.

# path_to_engine/config/initializers/ember.rb 
YourEngine::Engine.config.handlebars.templates_root = "your_path/templates" 

Qualsiasi altra configurazione specifica per brace relativo al motore potrebbe essere anche posizionato qui

Problemi correlati