RubyGems ããã±ã¼ã¸ã®ä½ãæ¹ - rubyforge ç»é²ã¾ã§
æ¥æ¬èªã®è§£èª¬ã§ RubyGems ããã±ã¼ã¸ã®ä½ãæ¹ã rubyforge ç»é²ã¾ã§ã®ä¸é£ã®æ¹æ³ãæ¸ãã¦ããã¨ãããè¦ããããã¨ããªããããã¨ã³ããªã¼ã«ãã¦ã¿ã¾ãããªããã¨å²ã¨ç°¡åã§ãã
åªãã RubyGems ããã±ã¼ã¸ã®ä½ãæ¹
newgem ã³ãã³ãã§ã®ã²ãªå½¢ä½æ
http://drnicwilliams.com/2006/10/11/generating-new-gems/
perl ã«ã¯ module-starter ãªã©ãCPAN ã¢ã¸ã¥ã¼ã«ã®ã²ãªå½¢ãä½ã£ã¦ããã便å©ãªã¦ã¼ãã£ãªãã£ãããã¾ãããgem ã§ããã«ãããã®ã newgem ã¨ããããã±ã¼ã¸ã§ãã
使ãæ¹ã¯ç°¡åã§ã
# gem install newgem
㧠newgem ãã¤ã³ã¹ãã¼ã«ãã¦ãã newgem ã³ãã³ããå®è¡ããã ãã§ä»¥ä¸ã®ããã«ã²ãªå½¢ãä½ã£ã¦ããã¾ãã
$ newgem packagename creating: packagename creating: packagename/CHANGELOG creating: packagename/README creating: packagename/lib ã以ä¸ç¥ã
ãã㦠cd packagename ãã¦ãã rake package 㧠gem ããã±ã¼ã¸ãããã§ããããã¾ãããã¦ãï¼ç°¡åï¼
$ rake package (in /home/gorou/tmp/ruby/gem/packagename) rm -r .config ãä¸ç¥ã Successfully built RubyGem Name: packagename Version: 0.0.1 File: packagename-0.0.1.gem mv packagename-0.0.1.gem pkg/packagename-0.0.1.gem
ãã㧠pkg ãã£ã¬ã¯ããªä»¥ä¸ã« gem 㨠tar ã® package ãã§ãããã£ã¦ã¾ãããã£ã¡ãããï¼
ãªã rubyforge ã«ã¢ãããã¼ãã®äºå®ããã人ã¯ãpackagename 㯠rubyforge ã®ããã¸ã§ã¯ãã® unix ã¢ã«ã¦ã³ãå(å¾è¿°)ã«ãã¦ãããæ¹ãç¡é£ã§ãã
ã²ãªå½¢ã®ã«ã¹ã¿ãã¤ãº
ã§ãæ®é㯠lib 以ä¸ã«ã©ã¤ãã©ãªãä½ã£ãããtest ãæ¸ããããREADME ããã¡ãã¨æ¸ããããã¾ãããã®å¾ Rakefile ãèªåãªãã«ã«ã¹ã¿ãã¤ãºãã¾ããããä¸ã®æ¹ã®
AUTHOR = "secondlife" EMAIL = "your contact email for bug fixes and info" DESCRIPTION = "description of gem" RUBYFORGE_PROJECT = "packagename"
ãããã¯é©å½ã«æ¸ãæããã¨ãã¦ãçãä¸ãããã®
#s.add_dependency('activesupport', '>=1.3.1') #s.required_ruby_version = '>= 1.8.2'
ã¨ã³ã¡ã³ãã¢ã¦ãããã¦ããç®æããä¾åé¢ä¿ã§å ¥ãããããã±ã¼ã¸ãããã°é©å½ã«æ¸ãæãã¾ãããã¨ãã°ã©ã¤ãã©ãªå é¨ã§ ActiveRecord 㨠ActiveSupport ã使ã£ã¦ãã®ã§ gem ã®ã¤ã³ã¹ãã¼ã«æã«ä¸ç·ã«ä¾åã©ã¤ãã©ãªã¨ãã¦è¿½å ããããã°ä»¥ä¸ã®ããã«ã
s.add_dependency('activerecord') s.add_dependency('activesupport')
ãã㧠RubyGems ããã±ã¼ã¸ã®ä½ãæ¹ã¯çµããã§ããããããã«ä½ãã¾ããã
rubyforge ã¸ã® Package ç»é²ã®æ¹æ³
rubyforge ã¨ã¯ãããã sourceforge ã¿ãã㪠ruby ã®ã©ã¤ãã©ãªãç°¡åã«ç»é²ã§ããã¦ã§ããµã¼ãã¹ã§ããBTS ãããã©ã¼ã©ã ããæ§ã ãªæ©è½ãæã£ã¦ãã¾ãããå®éã«æ´»ç¨ããã¦ãã®ã¯
- gem ããã±ã¼ã¸ã®ã¢ãããã¼ã
- web ãã¼ã¸ã®æä¾ ( http://hatenaapigraph.rubyforge.org/ ãªã©)
- svn/cvs ã¬ãã¸ããª
ãããã§ããããä»åã¯ç»é²ã®æé ãã svn ã® checkout/commit ãgem ããã±ã¼ã¸ã®ã¢ãããã¼ãã¾ã§è§£èª¬ãã¾ãã
ã¦ã¼ã¶ç»é²
ã¾ã https://rubyforge.org/account/register.php ããã¦ã¼ã¶ç»é²ããã¾ãããããã°ã¤ã³å㯠unix ã®ã¦ã¼ã¶ã¢ã«ã¦ã³ãã«ããªãã¾ãã
ããã¸ã§ã¯ãã®ç»é²
http://rubyforge.org/register/
ããç»é²ãè¡ãã¾ãã
Project full name
ããã¸ã§ã¯ãåã§ããHatena API Graph ã¨ããããããããã¯å¾ããã§ãå¤ããã(ããã)ã¾ãã
Project Purpose And Summarization
ããã¯ãã¶ã rubyforge 管çãã¦ãã人ãããã¸ã§ã¯ã㮠許å¯/æå¦ ããã®ã«ä½¿ãã¨ãããªã®ã§ç±ãæããè¾¼ãã¦æ¸ãã¾ãããã
ã¡ãªã¿ã«ãã¾ã¾ã§èªåãç³è«ããããã¸ã§ã¯ãã¯ã»ã¼ä¸è¡ã®é©å½ãµããªã¼ã§ããããã¹ã¦éã£ãã®ã§ãé©å½ã§ãè¯ãããã§ãï¼ããï¼ã
License
é©å½ãªã©ã¤ã»ã³ã¹ãé¸ã³ã¾ãããã
Project Public Description
æ¦è¦ã§ããå¾ããã§ãå¤ãããã¾ãã
Project Unix Name
ããã¸ã§ã¯ãã® unix ã¢ã«ã¦ã³ãã®ååã§ãããã¨ãã° example ã§ç»é²ããã¨ããããããµããã¡ã¤ã³ã example.rubyforge.org ã«ãªã£ãããsvn ã®ã¬ãã¸ããªã /var/svn/example ã«ãªã£ãããã¾ãã®ã§å²ã¨æ éã«æ±ºãã¾ãããã
SCM
好ããªæ¹ãé¸ã³ã¾ããããã¡ãªã¿ã« CVS ã¯é¸ãã ãã¨ãããã¾ãããæè¿ã® subversionåã¯åçç¡ç¨ã§ SVN ã§ããã§ãããã
ãã¦ããã¹ã¦ã«è¨å ¥ã㦠submit ãæ¼ãã¨ç³è«ããã¾ãããªãå®éã«ããã¸ã§ã¯ãã®èªå¯ãä¸ããã¾ã§ã«ã ãããæ°æéãåæ°æéãããã¾ãã
ssh ã®å ¬ééµã®ç»é²
rubyforge ãç°¡åã«ä½¿ãã«ã¯ ssh ã®å
¬ééµã®ç»é²ãæ¬ ããã¾ãããä»å¾è§£èª¬ãã subversion ã®å©ç¨ã§ã svn+ssh 㧠ssh ã®å
¬ééµãç»é²ããã¦ãã¨ä½ãã¨ä¾¿å©ã§ãã
ã¨ãããã㧠scp ãªããªããªã㧠username@rubyforge.org:.ssh/authorized_keys ãç½®ãã¦ããã¾ãããã
subversion ã¬ãã¸ããªã®ãã§ãã¯ã¢ã¦ã
ããã¸ã§ã¯ãã®èªå¯ãéã£ãããã£ãããªã®ã§ rubyforge ã® subversion ã¬ãã¸ããªã使ã£ã¦ã¿ã¾ãããã
ãã§ãã¯ã¢ã¦ãã¯
svn co svn+ssh://[email protected]/var/svn/example ./
ãªæãã§ãå ¬ééµãç»é²ããã¦ãã ssh-agent ã keychain ã使ã£ã¦ãã°æ¯åãã¹ã¯ã¼ãã®å ¥åãããªããªãã®ã§æ¥½ã§ããã¾ããããã©ã«ãã§ã¯èª°ã§ã
svn co svn://rubyforge.org/var/svn/example ./
ã® svn ãããã³ã«ã§ãã§ãã¯ã¢ã¦ãã§ãã¾ãã
gem ããã±ã¼ã¸ã®ã¢ãããã¼ã
ããã§ã¯ rake package ãªã©ã§ä½æãã gem ããã±ã¼ã¸ãã¢ãããã¼ããã¦ã¿ã¾ããããããã¸ã§ã¯ããã¼ã¸ããå³ä¸ã®ããã¡ã¤ã«ããé¸ã³ããTo create a new release click here.ããã¯ãªãã¯ããããã¨ã¢ãããã¼ãã®ç»é¢ã表示ããã¾ãã
ããã§é©å½ã«å
¥åã㦠( FileType 㯠.gem ã«ãããã¨ãå¿ããã«ï¼)ã¢ãããã¼ãããå°ããã¤ã¨ gem install packagename ã§ç»é²ããããã±ã¼ã¸ã rubyforge ãã gem ã³ãã³ãã§ã¤ã³ã¹ãã¼ã«ã§ããããã«ãªãã¾ãã
web ã¸ã®ã³ã³ãã³ãã®ã¢ãããã¼ã
rubyforge ã§ã¯ http://hatenaauthapi.rubyforge.org/ ã®ããã«ãèªå㧠scp ãªã©ã§ã³ã³ãã³ããã¢ãããã¼ããããã¨ãã§ãã¾ããããã©ã«ãã®ã¾ã¾ã§ã¯å¯ããæããªã®ã§ãrdoc ã§ä½ã£ãããã¥ã¡ã³ããã¢ãããã¼ããã¦ããã¾ãããã
ãããªã¨ã㯠Rake::RubyForgePublisher ã使ãã°ç°¡åã§ããRakefile ã®ä¸çªä¸ã«
Rake::RDocTask.new do |rdoc| rdoc.rdoc_dir = 'html' rdoc.options += RDOC_OPTS rdoc.template = "#{ENV['template']}.rb" if ENV['template'] if ENV['DOC_FILES'] rdoc.rdoc_files.include(ENV['DOC_FILES'].split(/,\s*/)) else rdoc.rdoc_files.include('README', 'CHANGELOG') rdoc.rdoc_files.include('lib/**/*.rb') end end desc "Publish to RubyForge" task :rubyforge => [:rdoc, :package] do Rake::RubyForgePublisher.new(RUBYFORGE_PROJECT, 'rubyforgeã®ã¢ã«ã¦ã³ãå(secondlifeã¨ã)').upload end
ãè¨è¿°ãã¦ããã¨ã
rake rubyforge
ã³ãã³ã㧠rdoc ãªããã¥ã¡ã³ããçæãã㦠scp ã§èªåã§ã¢ãããã¼ãããã¾ãã
ã¨ãããã㧠rubyforge ã®ç»é²ãå²ã¨ç°¡åãªã®ã§ããã¾ã¾ã§ããã©ããããã¨æ¬é ãã¦ãã人ãæ¯éããã±ã¼ã¸ãä½ã£ã¦ rubyforge ã«ã¢ãããã¾ãããï¼