ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Programming Ruby (31) 이름 공간, 소스 파일, 배포 - 2
    Ruby 2016. 11. 22. 22:20
    출판사, 원작자의 저작권의 문제 소지가 발생하는 경우 본 게시물은 삭제될 수 있습니다.




    코드 배포하고 설치하기


    루비를 설치하면 표준적인 구조로 설치가 된다. 루비가 설치되면 루비의 명령어들(ruby, ri, irb)은 바이너리 파일들을 저장하는 디렉터리에 설치된다. 또한 루비에 포함된 라이브러리들은 다른 디렉터리에 저장되고, 문서도 또 다른 어딘가에 저장된다. 따라서 루비가 설치된 시스템 상의 이러한 표준적인 구조에 따라서 애플리케이션의 코드들을 각각 적절한 위치에 배포하는 스크립트를 작성하는 것을 고려해 볼 수 있다.




    패키지 작성에 관한 규칙을 따르기 

    프로젝트 디렉터리 아래에는 라이브러리가 하는 일과 저작권과 관련된 사항을 담은 README  문서가 포함되어야만 한다. 설치 과정을 담은 INSTALL 문서와 라이선스를 담은 LICENSE 파일도 가지고 있어야 한다. 

    일반적으로 라이브러리와 함께 문서도 배포하게 될 것이다. 문서는 lib이나 bin 디렉터리와 같은 깊이의 doc/ 디렉터리 아래에 포함된다. C언어로 만든 라이브러리 확장이 포함된 경우 이 확장은 프로젝트 디렉터리 아래 ext/에 포함된다.




    루비젬 사용하기


    루비젬은 작성한 코드를 패키지로 만드는데 편리한 기능들을 제공한다. 작성한 코드를 누구에게나 공개하고자 한다면 루비젬은 최선의 선택이라고 할 수 있다. 

    루비젬은 디렉터리 구조에는 포함되지 않은 프로젝트에 대한 정보를 필요로 한다. 이는 Gemspec이라고 불리는 짧은 루비젬 스팩 파일로 만들어야 한다. 이름이 project-name.gemspec인 파일을 생성하고 이를 프로젝트 디렉터리 최상단에 위치시킨다. 앞선 예제의 경우 anagram.gemspec이 된다.


    packaging/anagram/anagram.gemspec

    Gem::Specification.new do | S |

        s.name = "anagram"

        s.summary = "Find anagram of words"

        s.description = File.read(File.join(File.dirname(__FILE__), 'README'))

        s.requirements =

            [ 'An installed dictionary (most Unix systems have one)' ]

        s.version = "0.0.1"

        s.author = "dave Thomas"

        s.email = "dave@praprog.com"

        s.hompage = "http://pragdave.pragprog.com"

        s.platform = Gem::Platform::RUBY

        s.required_ruby_version = '>=1.9'

        s.files = Dir['**/**']

        s.executables = [ 'anagram' ]

        s.text-files = Dir["test/test*.rb"]

        s.has_rdoc = false

    end


    파일의 첫 부분에서는 젬의 이름을 알려준다. 지정한 이름은 패키지의 이름의 일부로 사용되며 설치 시에 젬의 이름으로 표시되기 때문에 매우 중요하다. 대소문자 모두 사용 가능하지만 가능함녀 소문자만을 사용하기를 권장한다.

    version 문자열 또한 중요하다. 루비젬에서 버전 정보는 패키지 일므에도 사용하고 의존성 관리 시에도 사용한다. 버전 정보는 x.y.z 형식을 따라야 한다. 

    platform 필드는 이 라이브러리가 순수한 루비 코드로만 이루어져 있는지를 알려준다. 만약 윈도 exe파일이 포함되어 있는 경우 Gem::Platform::Win32 상수를 사용한다.

    s.excutables 행은 라이브러리를 설치했을 때 사용자 컴퓨터에 anagram 명령어를 설치하도록 해 준다. 많은 부분들이 생략되어 있는 예제이므로 자세한 자료는 웹을 찾아 보기를 바란다.




    루비젬 패키지 만들기 

    젬 스팩을 완성하면 배포 가능한  .gem 파일을 만들 수 있다. 단지 프로젝트 디렉터리 바로 아래에서 다음 명령어를 실행하면 된다.


    $ gem build anagaram.gemspec

    WARNING: no rubyforge_project specified

        Successfully built RubyGem

        Name: anagram

        Version: 0.0.1

        File: anagram-0.0.1.gem


    위의 명령어를 사용하면 anagram-0.0.1.gem이 생성된다. 생성된 젬파일을 설치하려면


    $ sudo gem install pkg/anagram-0.0.1.gem

    Successfully installed anagram-0.0.1

    1 gem installed


    anagram이 설치된 것을 확인해보자


    $ gem list anagram -d

    *** LCOAL GEMS ***

    anagram(0.0.1)



    이제 이 .gem 파일을 친구나 동료에게 보낼수 있으며 서버를 통해 공유할 수도 있다. 루비젬 서버를 사용하면 좀 더 손쉽게 젬 파일을 공유할 수 있다. 


    $ gem server

    Server started at http://[::ffff:0.0.0.0]:8808

    Server started at http://0.0.0.0:8808


    이 명령어로 젬 서버를 시작할수 있으며 --port 옵션을 통해 다른 포트를 통해 실행할 수도 있다. --source 옵션을 통해 특정 젬 서버를 지정할 수 있다.


    $ gem list --remote --source http://dave.local:8808

    *** REMOTE GEMS ***

    anagram (0.0.1)

    builder(2.1.2, 0.1.1)

    ...




    루비젬에 라이브러리 공개하기 


    RubyGems.org는 루비 라이브러리와 프로젝트들의 메인 저장소가 있다. RubyGem.org 계정을 만든다면 공개 서버에 자신의 .gem을 올리는 것도 가능하다.


    $ gem push anagram-0.0.1.gem

    Enter your RubyGem.org credentials.

    Password :

    Pushing gem to RubyGem.org...

    Successfully registered gem: anagram (0.0.1)


    이와 같이 루비젬에 라이브러리를 올리면 전 세계 루비 사용자가 이 라이브러리를 사용할 수 있게 된다.


    gem search -r anagram

    *** REMOTE GEMS ***

    anagram (0.0.1)


    더욱 간단히 다음과 같이 설치할 수도 있다.


    $ gem install anagram

    Adding Even More Automation





    끄읕.



Designed by Tistory.