문제

쓰고 있어요 루비 보석는 사용자가 설치하고 사용할 수 있습니다 명령 라인에 루비 툴과 상호 작용하는 서비스입니다.시작 및 중지할 수 있습 서비스(스폰을 떨어져 자식 프로세스).

나는 연구를 많이 수행으로 최고의 것을 사용하여 작성 네트워크 서비스 같은 ØMQ/EventMachine 고 나를 만드는 방법 루비 보석을 설치하는 바이너리에서 사용할 수 있는 명령행지만,나는 고군분투를 설정하는 좋은 코드는 구조입니다.

나의 명령 라인 유틸리티는 다양한 인수(사용 Trollop 고)사용하는 다양한 수업을 할 것,그리고 사용하는 다양한 기타 루비 보석입니다.

나는 확실하지 않다는 나을 클래스 파일을 요구하는 방법에 바이너리도록 경로 정확하다.

도움이 되었습니까?

해결책

게 RubyGems 돌볼 것이다.해야 합 포함하는 실행 파일 files 목록에 넣고 executables 에서 당신의 gemspec.그것은 일반적인을 넣어서 실행 파일 bin 디렉토리에서,예를 들어:

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

귀하의 gemspec 다음 다음과 같:

Gem::Specification.new do |s|
  s.name = 'myapp'

  # whatever else is in your gemspec

  s.files = ["bin/myapp","lib/myapp.rb"]  # or whatever other files you want
  s.executables = ["bin/todo"] 
end

이 시점에서,사용자가 설치를 통해 응용 프로그램 RubyGems, myapp 것에서 그들의 경로,그리고 lib 에있을 것입니다램의 loadpath,그래서 당신의 실행할 수 있는 단순히 함께 시작:

#!/usr/bin/env ruby

require 'myapp'
# whatever other requires

유일한 문제와 이는 동안,개발,수지 bin/myapp 귀하의 앱 실행됩니다.일요 조작하는 부하를 경로를 통해 $:$LOAD_PATH, 하지만 이것은 나쁜 형태로 간주.

를 사용하는 경우 번들러,그것의 쉬운 진행할 수 있도록 새 서비스는 지속적으로 함 bundle exec, 예 bundle exec bin/myapp.할 수 있습 교대로 사용 RUBYLIB 환경 변수,예를 들어, RUBYLIB=lib bin/myapp, 어 lib 에서 하중을 지탱하게 됩니다.

다른 팁

"Nofollow"> Bundler 와 함께 보석 프로젝트 구조를 생성 할 수 있습니다.

간단히 :

bundler

$ gem install bundler
.

Bundler를 사용하여 보석 프로젝트를 생성

$ 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
.

더 많은 문서에서 웹 사이트

모든 보석이 자연에 의해 오픈 소스이기 때문에 언제든지 더 나은 것들을 볼 수 있습니다.jeweler 또는 hoe와 같은 GEM Builder를 사용하여 조직적으로 말하기 기본 구조 중 일부를 설정합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top