Ответ 1
gem имеет команду unpack: http://guides.rubygems.org/command-reference/#gem-unpack
gem unpack rake
ls rake-0.4.3/
Ruby dabbler/новичок здесь, кто не знаком с экосистемой, поэтому приносите извинения, если это один из тех вопросов супер-духа.
Есть ли способ просмотреть все файлы и/или исходный код, установленные камнем? То есть, я просто запустил
$ gem install sass
И камень sass теперь является частью моей локальной системы
$ gem list --local
...
sass (3.1.16, 3.1.2)
...
Я хочу знать, что команда gem install
помещала в мою систему. Есть ли команда, которую я могу запустить, чтобы увидеть все файлы, установленные в gem?
После некоторых поисковых запросов, man gem
и gem help commands
, я обнаружил команду contents
.
$gem contents sass
Однако, когда я запускаю эту команду с вышеупомянутым сассовым камнем, я получаю следующие результаты
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/engine_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/functions_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/extend_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/logger_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/css2sass_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/conversion_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/script_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/util/subset_map_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/util/multibyte_string_scanner_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/callbacks_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/importer_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/scss/css_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/scss/scss_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/scss/rx_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/util_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/script_conversion_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/less_conversion_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/cache_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/plugin_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/bin/sass
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/bin/sass-convert
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/bin/scss
Однако этот список кажется неполным, поскольку я знаю, что есть файлы в
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.2/lib/
Почему contents
не показывает файлы из lib
?
Возможно ли установить установщик gem
для установки файлов за пределами папки gems?
Есть ли команда, которая может показать все, установленную камнем?
gem имеет команду unpack: http://guides.rubygems.org/command-reference/#gem-unpack
gem unpack rake
ls rake-0.4.3/
Есть два действительно хороших способа сделать это. Есть еще один камень, который позволяет вам открыть драгоценный камень и отредактировать его. Этот драгоценный камень называется gem-open
gem install gem-open
то
gem open sass
Другой способ - создать свои собственные rdocs.
gem rdoc sass
Затем вы можете посмотреть свои rdocs на
gem server
Также, если вы используете rvm, вы можете ввести rvm info
, и он покажет местоположение GEM_HOME
.
Это будет весь исходный код вашего драгоценного камня.
cd $GEM_HOME
cd gems/sass-3.1.2/
Update:
Именно так я в основном делаю это сейчас, когда использую bundler.
cd $(bundle show sass)
Это будет версия sass в вашем Gemfile.
Вы упомянули каталог lib/для версии 3.1.2. gem contents
без --version
будет просто перечислять одну версию (она, кажется, выбирает самую новую версию, но я не могу проверить, что это всегда верно). Какой результат вы получаете за gem contents --version 3.1.2 sass
?
Я обычно открываю камень, запуская эту команду с консоли
EDITOR=<your editor> bundle open <name of gem>
Вы также можете просто переименовать файл .gem в .tar и извлечь его как архив posix. Исходный код находится внутри него в папке lib
. Подробнее см. https://blog.srcclr.com/extracting-ruby-source-code-from-gem-packages/.
В дополнение к gem contents
другая команда, которую вы можете найти полезной, - gem environment
. Если у вас есть несколько путей для установки драгоценных камней, все они будут перечислены под меткой "GEM PATHS".