Enviar búsqueda
Cargar
How to make gem
•
Descargar como PPTX, PDF
•
2 recomendaciones
•
696 vistas
Ken Iiboshi
Seguir
How to make library of ruby.
Leer menos
Leer más
Tecnología
Educación
Denunciar
Compartir
Denunciar
Compartir
1 de 18
Descargar ahora
Recomendados
(工事中) Git の仕組み
(工事中) Git の仕組み
Teloo
MogileFSの利用と高速化
MogileFSの利用と高速化
kan
Yesod on Heroku
Yesod on Heroku
Takahiro Himura
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
Naotaka Jay HOTTA
Redisいれてみた
Redisいれてみた
Yoshida Takumi
Nio2
Nio2
Appresso Engineering Team
OpenStack + Common Lisp
OpenStack + Common Lisp
irix_jp
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
弘毅 露崎
Recomendados
(工事中) Git の仕組み
(工事中) Git の仕組み
Teloo
MogileFSの利用と高速化
MogileFSの利用と高速化
kan
Yesod on Heroku
Yesod on Heroku
Takahiro Himura
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
Naotaka Jay HOTTA
Redisいれてみた
Redisいれてみた
Yoshida Takumi
Nio2
Nio2
Appresso Engineering Team
OpenStack + Common Lisp
OpenStack + Common Lisp
irix_jp
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
弘毅 露崎
PostgreSQL共有バッファと関連ツール
PostgreSQL共有バッファと関連ツール
Masahiko Sawada
R以外の研究ツール
R以外の研究ツール
弘毅 露崎
データベースのお話
データベースのお話
Hidekazu Tanaka
Capistrano
Capistrano
Yasuharu Fukuda
オープンソースでシステム監視!Zabbix 1.8の機能と簡単インストール手順の紹介
オープンソースでシステム監視!Zabbix 1.8の機能と簡単インストール手順の紹介
Kodai Terashima
Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4
ichikaway
OSC東京2013/Spring_JPUG資料
OSC東京2013/Spring_JPUG資料
Chika SATO
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Daisuke Ikeda
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
OSSラボ株式会社
Version管理 1
Version管理 1
hakoika-itwg
WDD2012_SC-004
WDD2012_SC-004
Kuninobu SaSaki
ぼくの考えた最強のpipeline構成
ぼくの考えた最強のpipeline構成
Naoto Nishizono
Cephのベンチマークをしました
Cephのベンチマークをしました
OSSラボ株式会社
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしよう
max747
New configurationoferogamescaperev3
New configurationoferogamescaperev3
hiroin0
serverspecみんなで集めて(゚Д゚)ウマー?
serverspecみんなで集めて(゚Д゚)ウマー?
Sho Hashimoto
lilo.linux.or.jp の話 (2017年8月)
lilo.linux.or.jp の話 (2017年8月)
Kazuhiro Nishiyama
2日間Fabricを触った俺が 色々解説してみる
2日間Fabricを触った俺が 色々解説してみる
airtoxin Ishii
Hadoop on LXC
Hadoop on LXC
俊夫 森
core.async+transducers Shibuya.lisp #21
core.async+transducers Shibuya.lisp #21
Kei Tsuji
Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19
Hitoshi Kurokawa
Ruby In Wheezy
Ruby In Wheezy
Youhei SASAKI
Más contenido relacionado
La actualidad más candente
PostgreSQL共有バッファと関連ツール
PostgreSQL共有バッファと関連ツール
Masahiko Sawada
R以外の研究ツール
R以外の研究ツール
弘毅 露崎
データベースのお話
データベースのお話
Hidekazu Tanaka
Capistrano
Capistrano
Yasuharu Fukuda
オープンソースでシステム監視!Zabbix 1.8の機能と簡単インストール手順の紹介
オープンソースでシステム監視!Zabbix 1.8の機能と簡単インストール手順の紹介
Kodai Terashima
Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4
ichikaway
OSC東京2013/Spring_JPUG資料
OSC東京2013/Spring_JPUG資料
Chika SATO
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Daisuke Ikeda
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
OSSラボ株式会社
Version管理 1
Version管理 1
hakoika-itwg
WDD2012_SC-004
WDD2012_SC-004
Kuninobu SaSaki
ぼくの考えた最強のpipeline構成
ぼくの考えた最強のpipeline構成
Naoto Nishizono
Cephのベンチマークをしました
Cephのベンチマークをしました
OSSラボ株式会社
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしよう
max747
New configurationoferogamescaperev3
New configurationoferogamescaperev3
hiroin0
serverspecみんなで集めて(゚Д゚)ウマー?
serverspecみんなで集めて(゚Д゚)ウマー?
Sho Hashimoto
lilo.linux.or.jp の話 (2017年8月)
lilo.linux.or.jp の話 (2017年8月)
Kazuhiro Nishiyama
2日間Fabricを触った俺が 色々解説してみる
2日間Fabricを触った俺が 色々解説してみる
airtoxin Ishii
Hadoop on LXC
Hadoop on LXC
俊夫 森
core.async+transducers Shibuya.lisp #21
core.async+transducers Shibuya.lisp #21
Kei Tsuji
La actualidad más candente
(20)
PostgreSQL共有バッファと関連ツール
PostgreSQL共有バッファと関連ツール
R以外の研究ツール
R以外の研究ツール
データベースのお話
データベースのお話
Capistrano
Capistrano
オープンソースでシステム監視!Zabbix 1.8の機能と簡単インストール手順の紹介
オープンソースでシステム監視!Zabbix 1.8の機能と簡単インストール手順の紹介
Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4
OSC東京2013/Spring_JPUG資料
OSC東京2013/Spring_JPUG資料
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
Version管理 1
Version管理 1
WDD2012_SC-004
WDD2012_SC-004
ぼくの考えた最強のpipeline構成
ぼくの考えた最強のpipeline構成
Cephのベンチマークをしました
Cephのベンチマークをしました
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしよう
New configurationoferogamescaperev3
New configurationoferogamescaperev3
serverspecみんなで集めて(゚Д゚)ウマー?
serverspecみんなで集めて(゚Д゚)ウマー?
lilo.linux.or.jp の話 (2017年8月)
lilo.linux.or.jp の話 (2017年8月)
2日間Fabricを触った俺が 色々解説してみる
2日間Fabricを触った俺が 色々解説してみる
Hadoop on LXC
Hadoop on LXC
core.async+transducers Shibuya.lisp #21
core.async+transducers Shibuya.lisp #21
Similar a How to make gem
Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19
Hitoshi Kurokawa
Ruby In Wheezy
Ruby In Wheezy
Youhei SASAKI
コード読経会報告書
コード読経会報告書
Masahiko Toyoshi
Debian パッケージングチュートリアル
Debian パッケージングチュートリアル
Nozomu KURASAWA
Mac_Terminal_ver1.0
Mac_Terminal_ver1.0
Satoshi Kume
Git (実践入門編)
Git (実践入門編)
Naomichi Yamakita
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
Goh Matsumoto
Ruby in Wheezy @ 関西闇Ruby
Ruby in Wheezy @ 関西闇Ruby
Youhei SASAKI
(工事中) Git の仕組み
(工事中) Git の仕組み
Teloo
Java 7
Java 7
Tetsuya Yoshida
LinAction Theme LPICの問題を解いてみる~インストールとパッケージ管理編~
LinAction Theme LPICの問題を解いてみる~インストールとパッケージ管理編~
cyberblack28 Ichikawa
Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編
Yohei Yasukawa
Management of Gems using Bundler.
Management of Gems using Bundler.
Tamotsu Furuya
はじめてのRuby拡張ライブラリ
はじめてのRuby拡張ライブラリ
Masahiro Tomita
20130328 第03回福岡debian勉強会 debianパッケージ情報と依存関係の可視化
20130328 第03回福岡debian勉強会 debianパッケージ情報と依存関係の可視化
Tsuyoshi Yamada
Git 実践入門
Git 実践入門
Yasutaka Kanzaki
Similar a How to make gem
(16)
Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19
Ruby In Wheezy
Ruby In Wheezy
コード読経会報告書
コード読経会報告書
Debian パッケージングチュートリアル
Debian パッケージングチュートリアル
Mac_Terminal_ver1.0
Mac_Terminal_ver1.0
Git (実践入門編)
Git (実践入門編)
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
Ruby in Wheezy @ 関西闇Ruby
Ruby in Wheezy @ 関西闇Ruby
(工事中) Git の仕組み
(工事中) Git の仕組み
Java 7
Java 7
LinAction Theme LPICの問題を解いてみる~インストールとパッケージ管理編~
LinAction Theme LPICの問題を解いてみる~インストールとパッケージ管理編~
Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編
Management of Gems using Bundler.
Management of Gems using Bundler.
はじめてのRuby拡張ライブラリ
はじめてのRuby拡張ライブラリ
20130328 第03回福岡debian勉強会 debianパッケージ情報と依存関係の可視化
20130328 第03回福岡debian勉強会 debianパッケージ情報と依存関係の可視化
Git 実践入門
Git 実践入門
Último
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
Último
(9)
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
How to make gem
1.
How to make
gem ライブラリの作り方
2.
最初に必要なもの Ruby $ ruby
-v ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-darwin13.0.0] gem (Ruby標準添付) $ gem -v 2.1.11 bundler $ gem install bundler $ bundle –v Bundler version 1.5.2 Git $ git –-version git version 1.8.3.4 (Apple Git-47)
3.
Gemの主要ファイル構成 Path Description bin 実行可能ファイル配置パス ここに配置されたファイルが実行ファイルとして配置される lib このディレクトリが$(Rubyライブラリの探索パス)に追加される sample (ライブラリ名) sample.rb spec lib/sample.rbからrequireするファイル群を配置 require “sample”でロードされるファイル version.rb バージョンを記載するファイル テスト用のを格納するディレクトリ(RSpecの場合) spec_helper.rb Rspecの共通設定を定義するファイル Gemfile bundlerで依存解決を解決する為の設定ファイル Rakefile rakeタスクの定義ファイル sample.gemspec ライブラリのメタデータや設定を定義するファイル
4.
ひな形の作成 以下のコマンドでライブラリのひな形を作成 $ bundle gem
sample create sample/Gemfile create sample/Rakefile create sample/LICENSE.txt create sample/README.md create sample/.gitignore create sample/sample.gemspec create sample/lib/sample.rb create sample/lib/sample/version.rb
5.
gemspecの編集1 ライブラリのメタデータを入力する。(以下はsample.gemspecの一部) Gem::Specification.new do |spec| spec.name =
"sample" spec.version = Sample::VERSION spec.authors = ["i2bskn"] spec.email = ["i2bskn@gmail.com"] spec.summary = %q{Sample library} spec.description = %q{Gem for first time.} spec.homepage = "https://github.com/i2bskn/sample" spec.license = "MIT” # snip end
6.
gemspecの編集2 ライブラリの設定を入力する。(以下はsample.gemspecの一部) 今回は変更しない。 Gem::Specification.new do |spec| #
snip spec.files = `git ls-files -z`.split("x0") spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ["lib"] # snip end files : 全てのファイルの配列。 executables : 実行ファイル名の配列。bin以外の場所に配置する場合は変更。 test_files : テスト用ファイルの配列。test,spec,features以外に配置する場合は変更 require_paths : $:(Rubyのライブラリ探索パス)に追加するディレクトリ。
7.
gemspecの編集3 ライブラリの依存関係にRSpecを追加する。(以下はsample.gemspecの一部) RSpec以外も必要な場合は適宜追加する。 Gem::Specification.new do |spec| #
snip spec.add_development_dependency "bundler", "~> 1.3" spec.add_development_dependency "rake" spec.add_development_dependency "rspec" end add_dependency “ライブラリ名” : 実行時に必要な依存関係の定義。 add_development_dependency “ライブラリ名” : 開発時に必要な依存関係の定義。
8.
依存ライブラリのインストール ライブラリのルートディレクトリに移動して以下のコマンドを実行する。 $ bundle install
--path .bundle .bundleというディレクトリが作成される。 .bundle/configはbundleの設定ファイルで2回目以降はオプションの指定が不要。 .bundle/rubyに依存関係のライブラリがインストールされる。 .bundle/rubyにインストールされたライブラリは他のシステムに影響を与えない。 .bundle/rubyにインストールされたライブラリのコマンドはbundle execを付け る事で実行する事が可能。(rspecは例) $ bundle exec rspec
9.
テストコードの作成1 テスト用ディレクトリとspec_helper.rbの作成 $ mkdir -p
spec/sample $ touch spec/spec_helper.rb spec_helper.rbのコードを記述する。 require “sample” RSpec.configure do |config| config.order “random” end
10.
テストコードの作成2 テストコードの作成 $ touch spec/sample/foo_spec.rb ここではRSpecの解説は省きます。 require
"sample" describe Sample::Foo do describe "#greet" do it "returns greeting message" do expect(Sample::Foo.new.greet).to eq("Hello World") end end end
11.
Rakefileの編集 Rakefileにテストを実行するタスクを定義してデフォルトタスクにする。 require "bundler/gem_tasks" require "rspec/core/rake_task" desc
"Run all specs" RSpec::Core::RakeTask.new(:spec) do |t| t.rspec_opts = ["-c", "-fs"] end task :default => :spec
12.
テストの実行 テストを実行してみる。 $ bundle exec
rake spec /path/to/ruby -S rspec ./spec/sample/foo_spec.rb -c –fs /path/to/sample/spec/sample/foo_spec.rb:3:in `<top (required)>': uninitialized constant Sample::Foo (NameError) Sample::Fooクラスが定義されていない為、NameErrorがthrowされる。 rakeタスクでなくrspecコマンドでも実行可能。 $ bundle exec rspec /Users/iiboshiken/work/sample/spec/sample/foo_spec.rb:3:in `<top (required)>': uninitialized constant Sample::Foo (NameError)
13.
ライブラリの実装 Sample::Fooクラスの作成。 $ touch lib/sample/foo.rb module
Sample class Foo def greet "Hello World" end end end Sample::Fooクラスをsample.rbからrequireする。(以下はlib/sample.rb) require "sample/version" require "sample/foo"
14.
テストの再実行 テストを再度実行する。 $ bundle exec
rake spec /path/to/ruby -S rspec ./spec/sample/foo_spec.rb -c -fs Sample::Foo #greet returns greeting message Finished in 0.00252 seconds 1 example, 0 failures 「1 example, 0 failures」なのでテスト成功。
15.
実行ファイルの追加 binディレクトリとコマンドの作成 $ mkdir bin $
touch bin/sample $ chmod 755 bin/sample コマンドを実装。 #!/usr/bin/env ruby require "sample" puts Sample::Foo.new.greet 今回は実行ファイルのテストは書かないが、実際はテストした方が良い。
16.
Commitとビルド ひと通り実装したのでコミットしておく。 リモートリポジトリが無い場合はpushしなくてもよい。 $ git add
--all $ git commit -m “first commit” $ git push -u origin master ビルドしてインストールする。 $ bundle exec rake build $ bundle exec rake install グローバルにインストールする場合はgemコマンドを使う。 $ bundle exec rake build $ cd pkg $ gem install -l sample
17.
コマンドの実行 インストールしていない場合 $ ruby
-I lib bin/sample Hello World rake installした場合 $ bundle exec sample Hello World gem install -l sampleした場合 $ sample Hello World
18.
Fin
Descargar ahora