C'è un modo per conoscere il percorso radice della mia gemma? Sto provando a caricare una configurazione di default da un yaml all'interno del percorso delle gemme. Come ottengo la directory radice gems con ruby?Trovare la gemma radice
risposta
Data la seguente struttura del progetto:
your_gem/
lib/
your_gem.rb
Ecco come lo farei:
# your_gem.rb
module YourGem
def self.root
File.expand_path '../..', __FILE__
end
end
Ruby 2.0 ha introdotto il metodo Kernel#__dir__
; consente una soluzione notevolmente più breve:
# your_gem.rb
module YourGem
def self.root
File.dirname __dir__
end
end
Se è necessario accedere alle altre directory, si può semplicemente costruire su root
:
module YourGem
def self.bin
File.join root, 'bin'
end
def self.lib
File.join root, 'lib'
end
end
gem list <gem> -d
Oppure, se si sta utilizzando bundler:
bundle show <gem>
All'interno della gemma stessa: sto cercando di chiamare File.load. Qual è la gemma radice? –
Questa è una soluzione universale per gli eseguibili e le librerie. Carica la specifica utilizzando l'API Gem, quindi il percorso è sempre corretto:
spec = Gem::Specification.find_by_name("your_gem_name")
gem_root = spec.gem_dir
yaml_obj = YAML.load(gem_root + "/file_name.yaml")
Utilizzare ['File.join'] (http://www.ruby-doc.org/core-2.1 .1/File.html # method-c-join) invece della concatenazione di stringhe –
@MatheusMoreira perché è importante? –
'File.join' garantisce l'utilizzo del separatore di percorso appropriato per il sistema operativo che rende il codice cross-platorm . "/" è specifico per Linux. Molte versioni (tutte?) di Microsoft Windows usano "\". –
- 1. non riesce a trovare binari gemma - Gemma :: GemNotFoundException
- 2. Installazione della cintura di strumenti: impossibile trovare la gemma Heroku
- 3. rubino - Impossibile trovare gemma "jquery-rails"
- 4. Strumento/gemma per trovare il codice commentato
- 5. Impossibile leggere la radice
- 6. gemma che non riesce a trovare gemma nonostante sia stata installata
- 7. Manca la gemma mysql2. Aggiungerlo al tuo Gemfile: gemma 'mysql2'
- 8. esegui la gemma dell'annotazione all'interno del rubino.
- 9. Impossibile installare la gemma Nokogiri
- 10. Bundler non riusciva a trovare le versioni compatibili per gemma
- 11. Impossibile trovare un'installazione gemma valida activerecord-sqlite3-adapter
- 12. Heroku non riesce a trovare jquery.ui quando si utilizza la gemma jquery-ui-rails nella produzione
- 13. Come posso trovare la cartella radice di una copia di lavoro subversion data
- 14. Il modo più semplice per trovare la radice quadrata in Swift?
- 15. Errori strani quando si installa la gemma
- 16. Ruby "posta" docs gemma
- 17. Calcola l'ennesima radice?
- 18. Come ottengo innerHtml utilizzando la gemma Nokogiri
- 19. Rails: qual è la gemma Mailchimp preferita?
- 20. La migliore gemma di YouTube per Ruby?
- 21. Ottenere la pubblicazione radice del componente
- 22. psql - La radice del ruolo non esiste
- 23. Nascondere UINavigationBar solo per la radice UIViewController
- 24. URL Django, come mappare la radice all'app?
- 25. Come modificare una gemma?
- 26. Percorso radice dell'applicazione Grails
- 27. Come capire la struttura delle directory dell'albero radice di Android?
- 28. Come specificare che la gemma è solo la piattaforma JRuby?
- 29. Calcola la radice Nth con l'aritmetica dei numeri interi
- 30. Autorizzazione di un array di ID con la gemma Pundit
Ha lavorato per me per referenziare la mia cartella "docs" inclusa come parte della gemspec, dove l'utilizzo del file Rails.root.join ("docs") predefinito fallisce. Grazie! –
Sto usando ruby 2.0.0p0 (2013-02-24 revisione 39474). 'File.dirname __dir__' non funziona per me. Ottengo questo errore: 'TypeError: nessuna conversione implicita di nil in String'. Capita di sapere perché? Grazie. –
@ EE33, ['__dir__' è documentato per restituire' nil' se '__FILE__' è anche' nil'] (http://www.ruby-doc.org/core-2.0.0/Kernel.html#method -i -__ dir__). Come stai gestendo la tua sceneggiatura? –