[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:003640] Re: ruby gemについて



堀之内です。

> > 2年ほど?前 に、dennou-ruby プロダクトの顔をそろえましょうという提案をし、
> > http://davis.gfd-dennou.org/rubygadgets/ja/?%28Others%29+Dennou+Ruby+%C0%BD%C9%CA%A5%C6%A5%F3%A5%D7%A5%EC%A1%BC%A5%C8
> > に案を作りました。

について質問です。(面倒かけてすみませんがよろしくお願いします。)

| == ディレクトリ構成
...
| == インストール
...
|   rake nongeminstall とする (名前は要検討)

は特に異論ありません。rake のタスク名も nongeminstall 
でまあいいかと。カッコよくはないですがわかりやすいし,
基本 (rake install) は gem というので良いと思います。

| == Gem
| * スペックを name.gemspec ファイルにわかるか、 Rakefile に書くか
|   * 分けたほうがそれぞれ変更しやすいのでは?

すみませんが,分けるかどうかといっても何をどうというのがないと
わかってない私にはつらいです。解説か具体例がほしいなぁ。

| * rake build で作成
|   * build という名前は bundler の仕様

タスクの名前が bundler に合わせてあること自体は構わないです。

| * lib/numru/a/b/ ディレクトリ以下に、version.rb を用意し、
|   NumRu::A::B::VERSION 定数を定義するようにする

これもいいと思います。

| == Rakefile
| * 拡張ライブラリのコンパイル、インストール、gem 作成、
| source tar ball, test 実行のタスクを定義する

すみません,その具体例がほしいです。
前のメールに私がかいたように,なにか良いチュートリアルページ
ないですかね。

| === テンプレート案
|  # -*- mode: ruby; coding: utf-8 -*-
|  require 'rake/packagetask'
|  require 'rake/clean'
|  begin
|    require 'bundler/gem_tasks'

これは bundler を使う例ですね。

とりあえず bundler 等のツールを使わないで,
「Dennou Ruby 製品テンプレート」案に
準拠した例がほしいです。拡張ライブラリも含むのが良いです。
rb-grib はまさに準拠してる?(迷ってた部分は結局どうしましたか)
他にはいい例ないでしょうか。

# あとは外部の依存ライブラリ判断をしてるのがあれば
   というところでしょうか。


> 西澤さま:
> 
> ありがとうございます。おぼろげな記憶ではそういうのもあったような...
> という状態です。当時はまともに検討せずすみませんでした。とりあえ
> ず読んでみます。
> 
> > gem で管理されていない物への依存関係ですが、
> > 決まった方法はないと思います。
> > dcl-c は ruby-dcl に同梱しても良いのではと思ったりもしています。
> > netcdf は何か工夫が必要ですね。
> 
> どんな工夫が考えられるありえるでしょうか。
> 
> 堀之内
> 
> > 西澤です
> > 
> > 2年ほど?前 に、dennou-ruby プロダクトの顔をそろえましょうという提案をし、
> > http://davis.gfd-dennou.org/rubygadgets/ja/?%28Others%29+Dennou+Ruby+%C0%BD%C9%CA%A5%C6%A5%F3%A5%D7%A5%EC%A1%BC%A5%C8
> > に案を作りました。
> > 
> > 結局議論は進まないまま、
> > 案はそのまま案のままですので、
> > 決定版ではありません。
> > ここらへんでちゃんと決めた方が良いですね。
> > 
> > gem の作り方ですが、
> > 個人的な結論は、
> > 極力ツールを使わず、手で gemspec を書く
> > のが良いのではないかということです。
> > ツールは流行廃りがありますし、
> > 依存するものが増えるので、かえって後々の手間が増える気がします。
> > gemspec はそんなに難しくなく、かつ、一度書けばあとはマイナー変更でよいので。
> > また、すでにいくつか gem になっているものがあるので、
> > それをコピペすればそんなに手間ではないはずです。
> > 
> > gem で管理されていない物への依存関係ですが、
> > 決まった方法はないと思います。
> > dcl-c は ruby-dcl に同梱しても良いのではと思ったりもしています。
> > netcdf は何か工夫が必要ですね。
> > あと何があったでしょうか
> > 
> > 
> > 
> > 西澤誠也
> > 
> > 
> > 
> > 2013年4月2日 12:49 Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxx>:
> > > 堀之内です。
> > >
> > > 電脳Ruby関係のライブラリーのうち私がメンテするものは,
> > > これまで(私自身は) gem で提供してませんでした。
> > > 諸般の理由で gem は敬遠してたのですが,
> > > gem が標準でなかった ruby 1.8 もぼちぼち終わりですので,
> > > ここらで gem で提供するようにしないといかんかなと思い始めて
> > > います(やっとかよという声も聞こえそうですが)。ぼちぼち
> > > 調べようとしてるのですが,いろいろよくわからないので,
> > > 教えていただけると助かります。
> > >
> > > Q1 gem の作り方のチュートリアルとしてお勧めのページを
> > > 教えてください。ググればいろいろ出てきますが...。
> > > ツール(bundlerとかjewelerとか)を使って一から作るというのを
> > > 散見します。ゼロからはじめるならそういうのに乗っていくといいの
> > > かなと思いますが,既存のライブラリーを gem 化するのに良い
> > > ページもわかると嬉しいです。なお,ツールのはやりすたりに
> > > あまり影響されたくないという意識もちょっとあります。
> > >
> > > Q2 拡張ライブラリを含む gem の作り方のチュートリアルで
> > > お勧めのを教えてください。特に重要なのがラッパーで,
> > > C で書かれた外部のライブラリーに依存するわけですが,
> > > その依存関係の記述は最近はどうでしょう(以前はうまい
> > > 仕組みがないと聞いた気がしますが)。同梱する extconf.rb
> > > に書いてあっても,gem install するまで依存関係がみたされ
> > > ないことがわからず,インストールが途中で止まるというのは
> > > 嬉しくない(たぶんふつうそこで投げ出される)ので,
> > > spec になんらか記述できるとよいと思いますが。
> > > 不幸にしてそのような仕組みがない場合,どのように作ると
> > > ユーザーをうまく導けるといった経験則などあると嬉しいです。
> > >
> > > よろしくお願いします。
> > >
> > > 堀之内 武
> > > 北海道大学 地球環境科学研究院 地球圏科学部門
> > > 〒060-0810 札幌市北区北10条西5丁目
> > >
> > >
> > 
> > 
> > 
> > -- 
> > Seiya Nishizawa
> > RIKEN Advanced Institute for Computational Science
> > Tel: +81-78-940-5754, Fax: +81-78-304-4972
> > 7-1-26, Minatojima-minami-machi, Chuo-ku, Kobe, Hyogo 650-0047, Japan
> 
> 堀之内 武
> 北海道大学 地球環境科学研究院 地球圏科学部門
> 〒060-0810 札幌市北区北10条西5丁目
> 

堀之内 武
北海道大学 地球環境科学研究院 地球圏科学部門
〒060-0810 札幌市北区北10条西5丁目