トップページ⇒tech
983コメント375KB

Ruby 初心者スレッド Part 41

■ このスレッドは過去ログ倉庫に格納されています
0001京 ◆SsSSsSsSSs 2011/02/10(木) 13:47:51
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

★注意★ Ruby 1.9.2 は初心者には若干時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
 文字エンコーディング等の外部基礎知識が必要な上、不完全対応の第三者ライブラリでの問題の切り分けが手間です。
 迷う点の少ない1.8.7に習熟→おもむろに1.9.2の変更点のみ重点学習、とすればスムーズに移行できるでしょう。

関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・エラーメッセージの共通そうな部分やエラーの出るモジュール名でググる
 ・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
 ・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
 ・エラーメッセージ(自力で訳さずなるべくそのままで)
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
回答してくれた人には「ありがとう」のひとことをいってあげて。

■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0696デフォルトの名無しさん2011/04/06(水) 13:20:54.54
Rubyの知識がある人向けのマニュアルはある
文字エンコーディングに関して造詣がある人向けのガイドもある

が、どちらに関しても初心者な人が読めるかどうかまでは保証しない
ぐぐって出た記述がRuby1.9で動作するかどうかは初見ではわからないので、それで挫折しない心も必要
0697デフォルトの名無しさん2011/04/06(水) 13:35:05.88
イロイロ言われてはいるんだが、 Ruby 1.9.2 が初めてのプログラム言語というのでないならおk
ASCII-8BIT のことを「つまりバイナリです」と言われて納得してもらえるくらいの事前知識があれば問題ない
0698デフォルトの名無しさん2011/04/06(水) 13:50:29.27
自宅窓鯖からレンサバへ移行するため
C++で作っていたCGIを移植するべくRubyを始めようと思っています
一般的なプログラミングと文字コードに関して一通りの知識を有しています
それでもやはりRuby初学者は1.8から始めるべきでしょうか
1.9では速度も相当改善されていると聞きます
なので1.9から始めたいという気持ちが強いのですが
よく考えるとレンサバでは1.8しか使えないことがほとんどなので
選択の余地がありません。本当にありがとうございました。
0699デフォルトの名無しさん2011/04/06(水) 14:22:27.75
>1.9では速度も相当改善されていると聞きます
一般の人がふつうに(Ruby上で)文字列作ってふつうに文字列使うライブラリではふつうに遅いよ
ベンチマークが速いのは、単に負担がかかる動作を回避してるからに過ぎない
0700デフォルトの名無しさん2011/04/06(水) 14:26:35.70
レン鯖に入っているのはそれこそ1.8.5以下だったりすることも…
0701デフォルトの名無しさん2011/04/06(水) 14:31:26.81
Ruby1.9で速くなった部分と遅くなった部分とがあって、
ライブラリ中で速くなった部分がたくさん使われてて遅くなった部分があまり使われてないと
最終的にそのライブラリは「Ruby1.9では速くなった」になる
そんだけ

遅くなった筆頭がたまたま文字列作成だったので、
文字列たくさん作るようなライブラリは1.8よりも遅くなる可能性が高い
0702デフォルトの名無しさん2011/04/06(水) 14:38:16.71
php4→php5のようにいつかは1.9に移行するなら今のうちに1.9使ったほうがよくないのですか?
0703デフォルトの名無しさん2011/04/06(水) 14:46:50.20
移行自体は未練がましくのろのろと進んでるよ

ただ、それはRubyを学んで使い倒してる人の間でのお話で、
初心者スレとしては「いきなりRuby1.9は逆にめんどくさいぞ」というのが一応結論
めんどくさくてもいいなら1.9から始めるといい
ひょっとしたら君にとってはめんどくさく感じられないかもしれないし

このスレの想定する初心者というのはかなり初心者だから
0704デフォルトの名無しさん2011/04/06(水) 18:04:20.52
レン鯖で1.9が動かせるかどうか確認するのが先決じゃなかろうか
0705デフォルトの名無しさん2011/04/06(水) 18:46:53.32
>>694
Ruby 1.9 以上で 引数がひとつだけならば
Proc#===
を演算子形式で呼べる
lambda{|x| 2**x} === 3 # => 8
本来はcaseなどで真偽値を返す用途に使うのだろうけど

カリー化すれば複数の引数も何とか
(lambda{|x,y| x**y}.curry === 2) === 3 # => 8

メソッドとして呼べば複数の引数も渡せる
lambda{|x,y| x**y}.===(2,3) # => 8

で、「you普通にcallしちゃえよ」と突っ込まれる
0706デフォルトの名無しさん2011/04/06(水) 19:32:48.32
すいませんgemをインストールすることで、gemからRubyをインストール&アップデートすることも可能なのでしょうか?
また、gemというのはPythonやPHPやApacheなどにも対応してそうですね
linuxのaptみたいなのがwinでも使えると便利ですね
0707デフォルトの名無しさん2011/04/06(水) 20:21:24.20
pikじゃないの
0708デフォルトの名無しさん2011/04/06(水) 23:30:10.87
>>706
gemで直接Ruby本体(ruby)をアップデートすることはできない
でも707も言ってるとおり、pikというソフトウェアを使うと似たようなことはできる
コマンドラインからのrubyの一発インストールとか、バージョンアップとか
0709デフォルトの名無しさん2011/04/06(水) 23:50:25.53
pik使ってみたいと思います
pik教えてくれてありがとうございます
0710デフォルトの名無しさん2011/04/07(木) 02:43:36.63
>>688
そうですね。Rubyでネイティブアプリを作りたいです。
やはり無理なのか・・・。
0711デフォルトの名無しさん2011/04/07(木) 16:05:35.89
だからVMとかググレカス
0712デフォルトの名無しさん2011/04/07(木) 23:20:18.54
>>706
定番はrvmだがWindowsならpikだと思う
pikはRuby本体のインストールだけならmingw版やさらにDevKit(gemのコンパイルに使う)がバイナリですぐに入るしむしろrvmより楽かもね
0713デフォルトの名無しさん2011/04/08(金) 15:40:26.26
RubyとPython両方使えるに質問です

以下の各ケースでは、どちらの言語を選択したらよいでしょうか?

1.ゲームを作る場合
2.レンタルサーバを借りてWEBサイトを制作する場合

個人的な未開として1についてはライブラリの選択肢が多いほうを選択したいのですが、どちらが多いのかわかりません。
2についてはPythonだとバージョンにより特定のライブラリが使えなかったりするので互換性の面でRubyのほうがいいのかなと考えてます。
0714デフォルトの名無しさん2011/04/08(金) 15:51:35.16
見解(けんかい)
0715デフォルトの名無しさん2011/04/08(金) 16:21:13.78
ttp://www.google.com/search?num=50&hl=ja&lr=lang_ja&q=%22%E5%80%8B%E4%BA%BA%E7%9A%84%E6%9C%AA%E9%96%8B%22
最近のGoogleさんは物凄くて鼻血が出ちゃうわ

で、まあ、どっちにしてもPythonでいいんじゃないのと思う
ゲームみたいなのを作るのも、安い共用レンタルサーバでCGIとしてガンガン動作させるのも、
今のところRubyの得意分野ではない
0716デフォルトの名無しさん2011/04/08(金) 17:01:22.26
俺はRubyしか触ったこと無いんだけどRubyの利点ってなんなの?
0717デフォルトの名無しさん2011/04/08(金) 17:21:35.08
例えばCできる人が初めて触ってもCの書き方で何となく動かせるとか
文字列操作が強力でテキストファイルの整形を手軽にできるとか
0718デフォルトの名無しさん2011/04/08(金) 17:27:59.24
perlだってpythonだって同じじゃん。
0719デフォルトの名無しさん2011/04/08(金) 17:32:35.10
メリットが欲しいならJavaやれJava
就職できるぞwww
0720デフォルトの名無しさん2011/04/08(金) 17:35:20.77
記述の方向性が違うだけで、単体としての中身はあまり変わらないよ
第三者ライブラリとか含めるとかなり違うが
0721デフォルトの名無しさん2011/04/08(金) 17:36:56.38
ttp://www.namaraii.com/rubytips/でRubyの勉強を始めたいと思います
Ruby1.9.2です
基本的に問題ないでしょうか?
0722デフォルトの名無しさん2011/04/08(金) 17:39:41.26
そのサイト久しぶりに見た
1.9で動作する記述はあったっけ?
0723デフォルトの名無しさん2011/04/08(金) 17:42:53.51
>>722
日本語文字列とかじゃなければだいたい大丈夫なはず
まあ、動かなかったらこことかで聞けばいい
3回くらい躓けば慣れる程度のことだし

スレ的には躓きまくることでRubyそのものを諦められてしまうことを恐れてるっぽいが
0724デフォルトの名無しさん2011/04/08(金) 18:04:02.41
Ruby1.8.7をダウンロードしてMinGWでコンパイルしてインストールしたのですが、

'require':no such file to load -- openssl(LoadError)

というエラーが出て動きません。
Cygwinでは予め入っているので動きます。どうすれば動くようになる
でしょうか?よろしくお願いします。
0725デフォルトの名無しさん2011/04/08(金) 18:22:51.83
openssl入れろ
0726デフォルトの名無しさん2011/04/08(金) 18:40:45.96
require 'digest/sha1'
でも同じエラーが出ます。
0727デフォルトの名無しさん2011/04/08(金) 19:17:17.67
digest/sha1が入ってないんじゃね
0728デフォルトの名無しさん2011/04/08(金) 19:21:46.45
だからコンパイル時にopensslが見つからなかったのでSSL関連が全部取り除かれてるんだよ
マニュアルくらい読め
0729デフォルトの名無しさん2011/04/08(金) 19:40:21.63
1.6のころは何もしなくても動いたのに、あれこれやらなきゃ動かなく
なったスクリプト言語はもう卒業かな。sha1なんてどこで手に入れれ
ばいいの?NTL使ってC++に移植したほうがいいかも。
0730デフォルトの名無しさん2011/04/08(金) 19:42:57.22
一々探してインストールするのがマンドクセ。
第一ネットしかしない一般ユーザーがRubyを動かすために態々Ruby
インストールするなんてWindows環境じゃありえないし。
0731初心者ですが2011/04/08(金) 19:48:29.44
Winならここで最新版落とせるけどだめですか?
http://rubyforge.org/frs/?group_id=167&release_id=45627
0732デフォルトの名無しさん2011/04/08(金) 19:53:05.57
http://doc.ruby-lang.org/ja/1.9.2/doc/index.htmlにversion 1.9 未対応リファレンスと書かれているのですが
1.9をやるうえでこのマニュアルは参考にしてはいけないのですか?
0733デフォルトの名無しさん2011/04/08(金) 20:05:47.50
>>732
完成版ではありません網羅してませんという程度の意味
現状、内容そのものは合ってはいる
致命的に不足してるが
0734デフォルトの名無しさん2011/04/08(金) 20:17:31.71
ほしい情報はあまり載ってないよね
実際のソース読んだほうが早い
0735デフォルトの名無しさん2011/04/08(金) 20:22:03.03
>>731
やっぱり動かないよ。require 'digest/sha1' LoadError
0736デフォルトの名無しさん2011/04/08(金) 20:23:11.55
Cで書かれているのではない部分に関しては、Rubyスクリプトを提示したほうが早い場合は多い
ローカル変数名とかを適切にしまくって短めのメソッドにしてる場合、
(日本語の)文章で説明するより早そうな場合も多々…
0737デフォルトの名無しさん2011/04/08(金) 20:23:44.35
Cygwinでコンパイルするとエラーで止まるし。
どういう開発してるんだ?
0738デフォルトの名無しさん2011/04/08(金) 20:26:19.84
WinのコマンドプロンプトでRubyを動かしてます
1.9.2での日本語表示についてご教示お願いします
# -*- encoding: utf-8 -*-
require "kconv"
a = "あ"
puts Kconv.tosjis(a)
で日本語が表示できました
しかし日本語があるごとに毎回Kconv.tosjis()を書くのは面倒です

ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/45331
を元に以下のようにしてPHPのecho()みたいにしてみました
# -*- encoding: utf-8 -*-
require "kconv"
def echo(*arg)
puts NKF.nkf("--ic=UTF-8 --oc=Windows-31J", arg.map{|x|x.to_s}.join("\n"))
end
a = "あ"
echo(a)

もっと楽な方法ってございませんか?
0739デフォルトの名無しさん2011/04/08(金) 20:33:44.35
これって手動で全部パスを通す必要があるの?
http://rubyforge.org/frs/?group_id=167&release_id=45627
0740デフォルトの名無しさん2011/04/08(金) 20:36:36.37
とりあえず>>5
その上で、mswin32ではなくmingw32を選ぶ理由を述べよ
さらに、マニュアルとかすっ飛ばして自前でコンパイルしようとする理由も述べよ
それと、解説サイト探さずにファイルだけ持ってきてどうにかしようとする理由も言ってくれるとうれしい
0741デフォルトの名無しさん2011/04/08(金) 20:53:28.30
>>738
# -*- encoding: utf-8 -*-
$stdout.set_encoding(Encoding::Windows_31J, Encoding::UTF_8)
puts "ねこだいすき"


> TYPE ja.rb
# -*- encoding: utf-8 -*-
$stdout.set_encoding(Encoding::Windows_31J, Encoding::UTF_8)
puts "縺ュ縺薙□縺・☆縺・

> ruby ja.rb
ねこだいすき

>
0742デフォルトの名無しさん2011/04/08(金) 20:56:20.20
$stdout.set_encoding を使わずに、スクリプトの実行時に

ruby -EWindows-31J:UTF-8 ja.rb

としてもいい
本当はこっちのほうがいいんだけど、なんかこれがうまく動かないWindowsの環境があったはず
0743デフォルトの名無しさん2011/04/08(金) 20:57:09.62
>>740
1.自分のマシンに最適化して-march=core2 とかコンパイルオプションを
付け足して早く動かしたいから。
2.昔と同じ感覚でやっているので。昔のRubyは簡単に覚えられてmake
一発すぐ完成だったのに、最近のは使わない機能だけが肥大化して、
本当に使いたい部分が後回しにされている。昔はマニュアルなんか要
らなかったし読むのも面倒くさい。
3.楽でしょ?お手軽さが一番なんだよ。

あ、後パス通したら動いたので感謝。まだ使えるねw
0744デフォルトの名無しさん2011/04/08(金) 20:59:23.01
バージョン1.0くらいのRubyでも外部ライブラリは必要だったはず
0745デフォルトの名無しさん2011/04/08(金) 21:25:58.83
>>742
うちの
ruby 1.9.1p243 (2009-07-16 revision 24175) [i386-mingw32]
では動作しないっぽい気がする
いい機会だし1.9.2に上げよう
っていうか2009もないわな
0746デフォルトの名無しさん2011/04/08(金) 21:31:24.01
>>741-742
すごい・・・すごすぎます
0747デフォルトの名無しさん2011/04/08(金) 21:34:03.07
>>742
-EWindows-31J:UTF-8
って
-E Windows-31J:UTF-8
でも動くんだけどどうなってるんだこれ
-EWindows-31J:UTF-8でググってもヒットしなかった
0748デフォルトの名無しさん2011/04/08(金) 22:12:06.41
ttp://www.openspc2.org/reibun/Ruby/var/006/index.html
ttp://www.openspc2.org/reibun/Ruby/var/007/index.html

a = [1,2,3,4]
b = a
puts b[2]

と

a = [1,2,3,4]
b = a.dup
puts b[2]

は結果は同じなんですが何が違うのでしょうか?
0749デフォルトの名無しさん2011/04/08(金) 22:13:57.39
>>747
Rubyに対する引数から
・ "-Eなんとか" を探して、先頭の -E を取り除いて使う
・ "-E" を探し、見つかったらその次の引数を使う
という処理をすればいい
基本的にはRubyの中で正規表現を頑張りまくってる状態
0750デフォルトの名無しさん2011/04/08(金) 22:21:03.73
>>748
Object#dupはオブジェクトを複製して新しいオブジェクトを作る
a.object_idとb.object_idを表示してみるとわかるかも

オブジェクトとはなんぞやということがわからなければその勉強をするといい
Rubyには必須の知識で、理解すれば効率が上がるぞ
0751デフォルトの名無しさん2011/04/08(金) 22:29:45.69
勉強になりました
0752デフォルトの名無しさん2011/04/08(金) 22:53:45.83
PHPからRubyに来た口だけどi++とか--iとか出来ないのがきもい
i +=1 と i-= 1って書くのめんどくさい
0753デフォルトの名無しさん2011/04/08(金) 22:59:21.24
Twitter、検索結果表示が“3倍速く”なったと発表――フロントエンドの切り替えで
Twitterは、フロントエンドをRuby on RailsからBlenderに切り替えた結果、検索結果の待ち時間が大幅に改善されたと発表した。

http://www.itmedia.co.jp/news/articles/1104/07/news043.html
-----------------
急成長する検索ニーズに対処するために検索エンジンを書き換え、リアルタイム検索エンジンを立ち上げた。
その際にバックエンドをMySQLからJavaベースのテキスト全文検索エンジンLuceneに移行した。
また先週、フロントエンドをRuby on RailsからBlenderと呼ばれるJavaサーバに切り替えた。
待ち時間の短縮は、こうした取り組みの成果だという
0754デフォルトの名無しさん2011/04/08(金) 23:03:42.32
>>752
まあ皆さんそうおっしゃるのですが、
実のところ i = i + 1 のようなコードを書く機会は Ruby では極めて稀なので
やっぱどうでもいいかなあとか1ヵ月後くらいには思ってます

あれば便利かもしれないけど、どうしても使うなら i+=1 でもいいか、みたいな
0755デフォルトの名無しさん2011/04/08(金) 23:18:17.22
irb> 3.times{|i| p i}
0
1
2
irb> (3..5).each{|i| p i}
3
4
5
irb> (10..30).step(10){|i| p i}
10
20
30
irb> 8.upto(11){|i| p i}
8
9
10
11
irb> ['a', 'b', 'c'].each_with_index{|x, i| puts "#{i}: #{x}"}
0: a
1: b
2: c

で足りなかったらまたおいで
0756デフォルトの名無しさん2011/04/08(金) 23:37:45.73
while(true)〜endでできるのにloop{〜}が無限ループ用に用意されてる意味が理解できない
これも後一ヶ月修行をしろということかっ!
0757デフォルトの名無しさん2011/04/08(金) 23:44:25.39
>>756
PHPでできるんだからRubyなんてやる必要ないだろ
0758デフォルトの名無しさん2011/04/09(土) 00:44:44.48
そうなんだよな
他言語経験者がi++とか○○は当然あるに違いないと思ってたものがなかったり
privateとか微妙に意味が違ったりすると戸惑うよな
0759デフォルトの名無しさん2011/04/09(土) 01:38:24.34
>>723
WindowsでRuby使おうとしたら
インストールするところで何選んで良いか判らなくて躓いたわ
0760デフォルトの名無しさん2011/04/09(土) 07:02:53.15
>>757
うむ
冗長なAでできるから端的なBいらないじゃんをつきつめるとRubyは使われない可能性は高いw
0761デフォルトの名無しさん2011/04/09(土) 07:11:33.11
Ruby ではループカウンタはまず使わない
Array#each か Hash#each のイテレーションを使うかまたは>>755みたいに整数でくるくる回す
配列の内容全部が必要なのなら、添え字アクセスはひとまず忘れて、each する構造にできないかを最初に考える

>>759
アレで理解できる一握りの人だけが Windows で Ruby を使うことができます
>>5でいいと思うけどね
0762デフォルトの名無しさん2011/04/09(土) 09:46:39.56
>>759
だいたいの場所で、ActiveScriptRubyが第1のお薦めになってない?
まあ今はRubyInstallerとかRumixとか、他にも候補あるから迷うのはわかるが
0763デフォルトの名無しさん2011/04/09(土) 09:49:29.76
>>759
WindowsでRubyは
http://rubyinstaller.org/
が定番だと思うよ
0764デフォルトの名無しさん2011/04/09(土) 10:29:03.39
http://rubyinstaller.org/downloads/とhttp://rubyforge.org/frs/?group_id=167って中身同じなの?
0765デフォルトの名無しさん2011/04/09(土) 10:30:48.63
まだ定番とはいえないだろう
英語だし、mingw版だし
「次の選択肢」くらいの位置になってるとは思うけど
0766デフォルトの名無しさん2011/04/09(土) 10:43:57.20
rubyinstallerで入れてgemをupdateしてpikいれてaddが一番楽だったな
0767デフォルトの名無しさん2011/04/09(土) 11:27:28.10
>>764
URLが同じなら同じだろう

というかオフィシャルサイトのダウンロードページだけにするのが筋だな
rubyforgeのページ見せられてオフィシャルだと判断できるような人はおらん
単純に>>731のスジが悪い
0768デフォルトの名無しさん2011/04/09(土) 11:38:42.79
Ruby1.9.2

a = 123.45
b = a.to_a
puts b

実行するとundefined method `to_a' for 123.45:Float (NoMethodError)エラーになるのは何故ですか?
0769デフォルトの名無しさん2011/04/09(土) 11:43:25.04
Floatクラスにto_aが無いよってエラーに書いてあるよね
0770デフォルトの名無しさん2011/04/09(土) 11:46:38.41
過去には Object#to_a があったのだが、なくなった。
0771デフォルトの名無しさん2011/04/09(土) 11:48:50.25
ていうか Hash 以外の to_a の存在は忘れてくれ
古い解説ではもやもやしたベンリ機能のように書いてあることがあるんだが、
Object#to_a は今後使用しないことになったので [ ] で括ってリテラルで書いてくれ
a = 123.45
b = [a]
p b

配列っぽくなりうる Hash を to_a するのはアリだが、
h = {'k1' => 'v1', 'k2' => 'v2'}
p h.to_a

それ以外の「ひとつしかない」オブジェクトを to_a するのはダメ
0772デフォルトの名無しさん2011/04/09(土) 11:50:59.06
>>766
それが楽だと思うんだけどね
まず初めての人なら"pik入れてadd"のところはのちのちでいいかもしれない

>>768
ruby 1.8でもなくなるって警告出てたんだけどな
warning: default `to_a' will be obsolete
0773デフォルトの名無しさん2011/04/09(土) 11:57:37.06
こんにちは質問させてください!!

RubyGemsでインストールすると古くて動かないようなrubyで作られた便利なプログラムがある時に
最新版やforkされたソース(主にgitリポジトリから取得)だと動くことがあります
すかし、そのようなプログラムはRubyGemsのディレクトリ構成のせいか、
(便利プログラム)/bin/以下のファイルを/usr/local/binのようなパスを通った場所においても
`require': no such file to load
になり動いてくれません。

絶対パスだと動くようなのでaliasを作ればいいのですが、
一般的にこのようなRubyGemsの構造をしたプログラムの最新版のソースから利用するときの
ベストプラクティスは何かありますでしょうか?
bundler??とかいうのを使うのでしょうか
0774デフォルトの名無しさん2011/04/09(土) 11:58:39.72
> (便利プログラム)/bin/以下のファイルを/usr/local/binのようなパスを通った場所においても
> `require': no such file to load
> になり動いてくれません。

(便利プログラム)/bin/以下のファイルを/usr/local/binのようなパスを通った場所にシンボリックリンクをおいても

の間違いでした
0775デフォルトの名無しさん2011/04/09(土) 12:04:47.34
これからRubyを学ぶものは1.9から始めたほうがいいんだよね
0776デフォルトの名無しさん2011/04/09(土) 12:10:09.04
ふつうに gem コマンドでインストールすると、パスの通った位置に、
(便利プログラム)/bin/以下のファイル
をloadするスクリプトがインストールされる。たとえば、
~/.gem/ruby/1.9.1/gems/bundler-1.0.10/bin/bundle をロードする
~/.gem/ruby/1.9.1/bin/bundle (こっちはパスが通っている)
みたいな関係。

後者はどのgemでもほぼ同じだから、まねして作ってやればよい。

あるいは、ソースを取ってこれるのだから、rakeでgemを作って(ターゲットは
gemとかpackageとかpkgとかいろいろ)、
gem install --local でインストールしてもよい。
0777デフォルトの名無しさん2011/04/09(土) 12:11:08.95
>>773
git clone https://github.com/user/hogehoge
cd hogehoge/
rake pkg
gem install pkg/hogehoge-1.0.1.gem

rake pkg は rake build かもしれない
ようは開発版のソースから gem パッケージを手元で生成してインストールしてしまうという荒業
バージョン番号が同じだと既存の hogehoge-1.0.1 が上書きされるので、 rake で適当にバージョン上げれ

>>775
>>695-704
0778デフォルトの名無しさん2011/04/09(土) 12:14:49.97
1.9から始めて心が折れないとよいが
0779デフォルトの名無しさん2011/04/09(土) 12:16:28.69
勉強になりました
ありがとうございます
0780デフォルトの名無しさん2011/04/09(土) 12:27:12.86
rubygems が bundler を内部で使うようになってから gem install に毎回5分くらいかかるんですが
なんか回避方法はありませんか
0781デフォルトの名無しさん2011/04/09(土) 12:32:05.25
>>780
それは単にBundlerの展開データ量に実メモリが追いついてないんだろう
gem installを行うためには空きメモリが200MBくらい必要

ちなみに必要となるのはそのうちの2KBくらいのデータだ
それを探すために公開されてる全データを取得して展開してサーチしてる
07827592011/04/09(土) 12:35:31.69
こんなにいっぱいレスもらえるとは思いませんでした
みなさん本当にありがとうございました
0783デフォルトの名無しさん2011/04/09(土) 12:47:32.61
Rubyってbasicみたいだよね
何かVBやってるみたい
C#派ならPHPか!?
0784デフォルトの名無しさん2011/04/09(土) 13:00:02.77
コレクションとイテレーションとオブジェクトとメソッドコールが言語中枢を侵してるRubyと同じって
なんかずいぶん先進的なBasicやってたんだな
0785デフォルトの名無しさん2011/04/09(土) 14:25:02.28
>>781
gem作った人ってストリームって知らないの?
0786デフォルトの名無しさん2011/04/09(土) 15:10:01.81
>>785
そんなもの必要ないだろ
サーバの負担にもならないし、全部メモリに展開したほうが早い
0787デフォルトの名無しさん2011/04/09(土) 15:25:44.70
まあ、ああいうのは開発者さんの環境ではサクサク動くのだろうとは思う
0788デフォルトの名無しさん2011/04/09(土) 16:09:19.50
>>771
Enumerable#to_a は別名があるとはいえ、別に忘れなくても良いと思うんだ…
0789デフォルトの名無しさん2011/04/09(土) 22:11:31.08
>>786
swapがないVPSでgemがインストールできなかった当時の全俺がないた
0790デフォルトの名無しさん2011/04/09(土) 22:18:01.58
そもそものgemクライアントとして、こんなにたくさんのgemが登録されることを予期してはいなかった
だから途中で破綻するはずだったんだが、間の悪いことに開発者のマシンがスペックアップしたので
本当なら遅くなって使い物にならなくなるはずのシステムが普通に使えてしまった

世の中そんなもんだよね
0791デフォルトの名無しさん2011/04/09(土) 22:20:20.92
だれかgemをフォークして作り直してくれ。
Pythonで。
0792デフォルトの名無しさん2011/04/09(土) 22:26:44.55
eggじゃだめなん?
0793デフォルトの名無しさん2011/04/09(土) 23:40:49.80
>>752
お帰りください
0794デフォルトの名無しさん2011/04/10(日) 06:42:01.76
いやいや、i++で1増えるほうが気持ち悪いから。
ってかこれこれ誰が考えたんだよ。
C言語作った奴か?
0795デフォルトの名無しさん2011/04/10(日) 07:02:40.24
まあオブジェクト指向が机上の空論か学者のオモチャだったころのイケてるフィーチャーだったものなので
現在のRubyのようにイテレータがきちんと枚挙をサポートしてれば出番は確実に減る
■ このスレッドは過去ログ倉庫に格納されています