11 건의
RoR 검색결과
  1. 2016.12.21 꼬마군단
  • 잘못된 정보나 수정 사항이 있으시면 댓글 부탁드립니다


루비젬(RubyGem)은 루비의 표준화 패키징 및 설치 프레임워크로

gem으로 루비 어플리케이션이나 라이브러리를 설치하고 패키징하고 관리하는 역할을 합니다.


Rails(http://rubyonrails.org/), Hanami(http://hanamirb.org/), Pakyow(https://www.pakyow.org/) 도 Ruby의 웹 프레임워크이면서도 Gem 중 하나 입니다.


Gem 은 레일즈 개발 시 필수적인 요소이며, 개발의 편의성을 증대시켜주는 최고의 요소입니다.


미천한 실력이므로 간단한 자바스크립트로 만드는 젬으로 만들겠습니다.


현재 퍼블리싱이 되어있는 clipboard-toastr-rails  기준으로 작성하였습니다.


이 젬은 clipboard-railstoastr-rails 두 개의 젬을 섞은 것으로,


두 젬 모두 업데이트가 안 되서 아예 합쳐서 만들어보았습니다.


Vim  을 사랑하는 개발자여서 모든 작업은 CLI 로 진행하겠습니다.


GUI 개발을 하시는 분은 펭귄님의 젬만들기를 참고해주셔도 상관 없습니다.


1. Gem Initialize


젬 만들기의 처음은 어렵지 않습니다.

bundle gem [GEM_NAME]  으로 젬 이름은 추후에도 수정가능하지만 처음부터 제대로 지으시면 편하지 않을까 생각되네요.

  
    $ bundle gem clipboard-toastr-rails
Creating gem 'clipboard-toastr-rails'...
MIT License enabled in config
      create  clipboard-toastr-rails/Gemfile
      create  clipboard-toastr-rails/.gitignore
      create  clipboard-toastr-rails/lib/clipboard/toastr/rails.rb
      create  clipboard-toastr-rails/lib/clipboard/toastr/rails/version.rb
      create  clipboard-toastr-rails/clipboard-toastr-rails.gemspec
      create  clipboard-toastr-rails/Rakefile
      create  clipboard-toastr-rails/README.md
      create  clipboard-toastr-rails/bin/console
      create  clipboard-toastr-rails/bin/setup
      create  clipboard-toastr-rails/LICENSE.txt
Initializing git repo in /Users/kai/projects/clipboard-toastr-rails


현재 포스팅용으로 제작 된 샘플과 퍼블리싱 된 소스코드는 조금 상이함을 알아주세요


다음 두 파일을 생성 및 수정해줍니다.


  
  
    # lib/clipboard/toastr/rails/engine.rb
module Clipboard
  module Toastr
     module Rails
      class Engine < ::Rails::Engine
      end
    end
  end
end


  
    # lib/clipboard/toastr/rails.rb
require "clipboard/toastr/rails/version"
require "clipboard/toastr/rails/engine" if defined?(::Rails)
module Clipboard
  module Toastr
     module Rails
      # Your code goes here...
    end
  end

end


2. 스크립트 및 스타일시트 파일 복사

toastr (http://codeseven.github.io/toastr/)과 clipboard.js (https://clipboardjs.com/) 의 스크립트를 받아서 vendor 디렉토리에 넣어줍니다.

app/assets 과 vendor  둘 중 아무데나 넣어도 상관없지만, 저는 벤더 디렉토리가 편해서 디렉토리 생성 후 스크립트를 넣어줍니다.


  
    $ mkdir -p vendor/stylesheets
$ mkdir -p vendor/javascripts

$ cp TOATRS_SCIPRT_PATH ./vendor/javascripts/
$ cp CLIPBOARDJS_SCIPRT_PATH ./vendor/javascripts/


3. gemspec 수정

  
  	# clipboard-toastr-rails.gemspec 

# coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'clipboard/toastr/rails/version'
Gem::Specification.new do |spec|
  spec.name          = "clipboard-toastr-rails"
  spec.version       = Clipboard::Toastr::Rails::VERSION
  spec.authors       = ["OWNER_NAME"]
  spec.email         = ["OWNER_EMAIL"]

  spec.summary       = %q{SUMMARY}
  spec.description   = %q{DESCRIPTOIN}
  spec.homepage      = "GITHUB_URL"
  spec.license       = "MIT"

  # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
  # delete this section to allow pushing this gem to any host.
  #if spec.respond_to?(:metadata)
  #  spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
  #else
  #  raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
  #end

  spec.files         = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
  spec.bindir        = "exe"
  spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
  spec.require_paths = ["lib"]

  spec.add_development_dependency "bundler", "~> 1.11"
  spec.add_development_dependency "rake", "~> 10.0"
end


4. 젬 테스트

  
    spec.files         = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
  

위와 같이 젬에 포함 되는 파일은 git 에 기준이 되므로 푸시는 하지 않더라도 Commit 은 해주시기 바랍니다.

젬 테스트는 로컬에서 하고 푸시하는 것이 좋으므로, 젬 빌딩부터 합니다.

  
    $ gem build  clipboard-toastr-rails.gemspec
  Successfully built RubyGem
  Name: clipboard-toastr-rails
  Version: 0.1.0
  File: clipboard-toastr-rails-0.1.0.gem


그리고 젬을 당겨올 때에는 크게 3가지 방법(Git, RubyGem, LocalPath)이 있습니다.(제가 아는 한??.)

필요시마다 바꿔서 쓰시면 될것 같습니다.

  
    # Gemfile 
#gem "clipboard-toastr-rails" # From rubygem.org
#gem "clipboard-toastr-rails", github: "ggomagundan/clipboard-toastr-rails" # From Github or GitBuckit
gem 'clipboard-toastr-rails', path: "/Users/kai/projects/rails/clipboard-toastr-rails" # Local Path


테스트 중 젬 파일을 재빌딩 할경우에는


$ bundle update 

로 젬을 다시 당겨주시면 됩니다.



5. 루비젬 인증 및 푸시

만약 루비젬 에 가입이 안 되어있다면 가입부터 하셔야 합니다.

  
	# 루비젬 인증서 다운로드
$ curl -u USERNAME https://rubygems.org/api/v1/api_key.yaml >
~/.gem/credentials; chmod 0600 ~/.gem/credentials

Enter host password for user 'USERNAME':


# 젬 푸시
$ gem push clipboard-toastr-rails-0.1.0.gem


그러면 젬의 퍼블리싱은 끝나고 다른 사람들도 사용할 수 있는 젬이 완성됩니다.


https://rubygems.org/gems/clipboard-toastr-rails


으로 들어가면 제작 된 젬을 볼 수 있고, Github 에도 푸시를 하면 샘플이나 README 파일로 프로젝트에 대한 설명을 넣어주시면 됩니다.



 

Reference List

https://say8425.github.io/generate-gem/  [펭귄] 2016 루비 대림절 특집 - Gem 만들기

http://guides.rubygems.org/make-your-own-gem/  make-your-own-gem


TokenMarket ICO calendar
태그