Chcę umieścić skrypt powłoki w folderze bin mojego gem, wraz z innymi programami Ruby, które należą do pakietu. Chciałbym, aby ten skrypt powłoki został zainstalowany w katalogu bin jako-jest (to jest, bez wrapperów). Czy to możliwe z klejnotami Ruby? Byłbym zadowolony z haków po instalacji, jeśli nie jest to możliwe w inny sposób. Ktoś ma z tym jakieś doświadczenie?Wdróż skrypt powłoki z klejnotem Ruby i zainstaluj w katalogu bin
Odpowiedz
Ten problem jest opisany tutaj: https://github.com/rubygems/rubygems/issues/88
Jeśli gem jesteś opracowanie jest przeznaczone tylko do użytku własnego, wystarczy zainstalować go z
gem install --no-wrapper my_gem
Myślę, że najlepszym napisz skrypt ruby, który uruchamia twój skrypt basha. Oto przykład, w jaki sposób zrobić to:
bin/test_gem
#!/usr/bin/env ruby
bin_dir = File.expand_path(File.dirname(__FILE__))
shell_script_path = File.join(bin_dir, 'test_gem.sh')
`#{shell_script_path}`
bin/test_gem.sh
#!/bin/sh
echo "Hello World!"
test_gem.gemspec
spec.files = [
# ...
'bin/test_gem', 'bin/test_gem.sh'
]
# ...
spec.executables = ['test_gem']
UWAGA: Nie zapomnij ustawić oba pliki w folderze bin
do wykonywalnego!
Należy pamiętać, że podczas test_gem.sh
jest zarejestrowany komendy files
rubygems, to nie jest zarejestrowany jako executables
: to po prostu być umieszczone w zainstalowanych gem reż ale nie zawinięty/podkładano.
Jeśli zainstalujesz gem (i uruchomi ponownie rehash w razie potrzeby), wywołanie test_gem
spowoduje skrypt ruby wykonujący twój skrypt powłoki.
- 1. Zadania ładowania Ruby z klejnotem
- 2. Wdróż skrypt R w przenośnym formacie usb
- 3. Wartość zwracana z sql skrypt powłoki skrypt
- 4. Skrypt powłoki źródłowej do środowiska wewnątrz skryptu ruby
- 5. Wykryj zatrzymanie z klejnotem Ruby Daemons
- 6. Uruchom skrypt powłoki dla każdego pliku w katalogu
- 7. Zainstaluj msi z msiexec w określonym katalogu
- 8. Skrypt powłoki z plikiem JAR na końcu
- 9. Pomoc z klejnotem "Ilekroć" w Ruby dla zadań cron
- 10. Jak dołączyć kontroler z klejnotem Ruby on Rails?
- 11. skrypt powłoki polecenie wyjścia ssh
- 12. Skrypt powłoki nie działa z nohupem
- 13. Czy skrypt Ruby może określić, w którym katalogu się znajduje?
- 14. sposób ładowania wszystkich zespołów z katalogu/bin
- 15. Brak źródła dla ruby-1.9.2-p321 z klejnotem debuggera-ruby_core_source
- 16. Jak wywołać skrypt powłoki i przekazać argument z innego skryptu powłoki
- 17. Dodawanie katalogu do $ LOAD_PATH (Ruby)
- 18. Wdróż phantomJS w aplikację node.js?
- 19. Zainstaluj klejnot Ruby Curb w Windows XP
- 20. Skrypt powłoki i spacje na ścieżce
- 21. dodawanie katalogu ~/bin na ścieżce
- 22. Skrypt powłoki: jak usunąć wszystkie pliki w katalogu, z wyjątkiem tych wymienionych w pliku?
- 23. RVM zainstaluj ruby z lokalnego źródła
- 24. Błąd Ruby: "Brak takiego pliku lub katalogu - skrypt/generowanie (LoadError)"
- 25. Używanie kompasu z Ruby (nie powłoki)
- 26. Szyny: Sqlite z klejnotem PG
- 27. Skrypt powłoki - usuń pierwszy i ostatni cudzysłów (") ze zmiennej
- 28. przędza - zainstaluj moduły w określonym katalogu
- 29. Npm Zainstaluj DevDependencies w oddzielnym katalogu
- 30. Uruchom skrypt powłoki z Java Synchronously
Co próbowaliście? To powinno zadziałać, o ile wiem. Opakowanie może być stosowane, ale nie powinno to być dużym problemem. W większości przypadków rzeczy takie jak 'bundle exec' będą działały poprawnie. – tadman
Niestety, to jest problem. Opakowanie to skrypt ruby, który próbuje załadować mój skrypt powłoki i wykonać go jako program Ruby. Najwyraźniej barfuje po napotkaniu składni bash. – scientistician
Jeśli piszesz klejnot Ruby, musisz trzymać się konwencji, które narzuca. Jednym z nich jest oczekiwanie, że twoje skrypty będą kompatybilne z wersją Ruby wybraną przez użytkownika. Jeśli potrzebujesz uruchomić skrypt powłoki, możesz zawsze użyć 'exec', aby przekonwertować proces Ruby do skryptu bash z tymi samymi argumentami. – tadman