Esiste un modo per "ricaricare" o "aggiornare" un rubygem in memoria? Dato che sto giocando in irb, a volte mi piace modificare i miei file gem e, se richiedo la stessa gemma, non si aggiorna in memoria e dà l'output "false". Attualmente devo uscire da IRB, tornare in IRB e quindi richiederlo nuovamente, ci deve essere un modo migliore ... che cos'è?Ricarica rubygem in IRB
risposta
Come altri hanno suggerito, è possibile utilizzare il # Kernel load. . Tuttavia, non perdete il vostro tempo a cercare e caricare ogni file gemma come tutti i file che sono stati richiesti sono memorizzati in $" Armati di questa conoscenza, ecco un comando IRB reload:
def reload(require_regex)
$".grep(/^#{require_regex}/).each {|e| load(e) }
end
Ad esempio, se si sono stati utilizzando la gemma hirb in IRB, si sarebbe semplicemente ricaricare con:
>> reload 'hirb'
Se per qualsiasi motivo il carico non funziona (è più esigente circa le estensioni dei file che richiede è), è possibile ri-richiedono alcun file per prima cosa cancella la sua voce in $ ". Con questo consiglio il comando di cui sopra sarebbe:
def reload(require_regex)
$".grep(/^#{require_regex}/).each {|e| $".delete(e) && require(e) }
end
Scegliere quello che funziona per voi. Personalmente, io uso quest'ultimo.
Funziona anche per gli script inclusi dal filesystem? Non ha funzionato per il mio ... e la mia istruzione require si presenta così: 'richiede "# {File.expand_path (__ FILE __)} /../ lib/query"' – picardo
Non lo fa, no. La regex è troppo restrittiva: devi specificare il percorso completo. Ho modificato la mia versione, sostituendo^con /. – Trejkaz
carico 'filename.rb'
uno alla volta per ogni che è stato cambiato ...
Un modo è quello di utilizzare Kernel#load
. Puoi usarlo praticamente come Kernel#require
, tranne per il fatto che devi includere esplicitamente l'estensione del file. Tuttavia, ha i suoi svantaggi (anche qualcosa di semplice come class Foo < Struct.new(:foo); end
fallisce, dato che non è possibile cambiare la superclasse di una classe), quindi mi piacerebbe anche conoscere un modo migliore per farlo.
In rotaie è possibile ottenere questo con su script/console, ma non so che tipo di magia che usano.
This gist sembra promettente ma non l'ho provato.
'reload!' Si suppone solo di caricare cose nella directory 'app /', niente di più. Ci sono anche limitazioni a questo, motivo per cui molte classi e controllori vengono visualizzati come classi anonime nel proprio ambiente di sviluppo in modo che possano essere eliminati completamente e reinizializzati su ogni richiesta. – tadman
- 1. Determinare quale rubygem stai utilizzando
- 2. Reset IRB Console
- 3. storia IRB non funziona
- 4. Rails irb directory predefinita
- 5. Memcached rubygem + errore argomento Rlibmemcached con memcache_mget()
- 6. Nokogiri (rubygem): Trovare e sostituire tag HTML
- 7. Modifica dell'ordine di lettura delle sorgenti Rubygem
- 8. Problema installazione RMagick rubygem su CentOS 5
- 9. Come posso ricaricare uno script in IRB?
- 10. Posso ripetere il comando in irb?
- 11. carica automaticamente l'ambiente del progetto in irb
- 12. Impossibile trovare gem in irb: "NameError: Gemma costante non inizializzata da (irb)"
- 13. Ricarica AVMutableComposition
- 14. Come aggiungere altre 'proprietari' di una gemma in rubygem
- 15. Ricarica/Aggiorna Visualizza in Swift
- 16. Pagina Ricarica comportamenti in Safari
- 17. Ricarica il percorso in PowerShell
- 18. Ui-router AngularJS: ricarica: true ricarica anche lo stato genitore
- 19. Jekyll auto-ricarica
- 20. Gunicorn :: ricarica dall'applicazione stessa
- 21. Ricarica un attributo modello
- 22. Ricarica rotaie initializers
- 23. jquery multiselect ricarica
- 24. Django Form ricarica dati
- 25. Ricarica intero Fancytree
- 26. Gulp con live-ricarica
- 27. aggiorna o ricarica datatable
- 28. Ricarica dopo chiusura modale
- 29. Cronologia IRB non funzionante con Ruby 2.3.0
- 30. rbenv irb history non sta salvando
se dovessi codificare questa funzionalità in dove dovrebbe andare? RubyGems? Questa comunità accetta generalmente nuove richieste di pull di funzionalità? – Schneems