Как мне структурировать службу командной строки ruby ​​gem? - PullRequest
4 голосов
/ 10 марта 2012

Я пишу гем ruby, который пользователи могут установить и использовать инструмент командной строки ruby ​​для взаимодействия со службой.Вы можете запускать и останавливать службу (она будет порождать дочерний процесс).

Я провел много исследований лучших способов использования сетевых служб, таких как ØMQ / EventMachine и я.узнайте, как создать гем Ruby, который установит двоичный файл, который вы можете использовать в командной строке, но я изо всех сил пытаюсь установить хорошую структуру кода.

Моя утилита командной строки будет принимать различные аргументы (яЯ буду использовать Trollop ), и он будет использовать различные классы, чтобы делать что-то, и использовать различные другие рубиновые самоцветы.

Я не уверен, куда я должен поместить свои файлы классов и какпотребуйте их в моем двоичном файле, чтобы пути были правильными.

Ответы [ 3 ]

9 голосов
/ 10 марта 2012

В основном, RubyGems позаботится об этом за вас.Вам нужно будет включить ваш исполняемый файл в список files и поместить его в executables в вашем gemspec.Обычно ваш исполняемый файл помещается в каталог bin, например:

$ ls
bin/   myapp.gemspec  lib/    Rakefile
$ ls bin
bin/myapp

В таком случае ваш gemspec будет выглядеть так:через RubyGems myapp будет находиться на их пути, а lib будет находиться в пути загрузки вашего приложения, поэтому ваш исполняемый файл может просто начать с:разработки, вы не можете просто сделать bin/myapp и запустить ваше приложение.Некоторые разработчики манипулируют путем загрузки с помощью $: или $LOAD_PATH, но это считается дурным тоном.

Если вы используете упаковщик, проще всего запустить ваше приложение локально с помощью bundle exec, например bundle exec bin/myapp.Вы можете поочередно использовать переменную окружения RUBYLIB, например, RUBYLIB=lib bin/myapp, которая поместит lib в путь загрузки.

4 голосов
/ 14 апреля 2013

Вы можете создать структуру проекта gem с помощью Bundler .

Коротко:

Установить Bundler

$ gem install bundler

Использование Bundler для создания проекта gem

$ bundle gem myapp
$ cd myapp

Добавить исполняемый файл

$ mkdir bin
$ cat > bin/mycommand << EOSCRIPT
  #!/usr/bin/env ruby

  require 'myapp'

  puts "Executing myapp"
  EOSCRIPT
$ chmod +x bin/mycommand

Установите свой драгоценный камень

$ rake install

Запустите ваш скрипт

$ mycommand
Executing mycommand

Поделитесь своей утилитой на rubygems.org

$ rake release

Больше документов на сайте

0 голосов
/ 10 марта 2012

Поскольку все драгоценные камни по своей природе являются открытыми, вы всегда можете взглянуть на некоторые из лучших примеров. Использование построителя драгоценных камней, такого как jeweler или hoe, также поможет вам разобраться с некоторыми базовыми организационными структурами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...