1

Leopard を実行している iMac で ruby​​ の基本を学び始めています。

現在私のシステムにあるバージョンは ruby​​ 1.8.6 です

しかし、最新の「PickAxe」本に対応するので、独自に (MacPorts 経由で) ruby​​ 1.9 もインストールしました。

ruby 1.8.6 のインストール場所は /usr/bin/ruby です ruby​​ 1.9.1 のインストール場所は /opt/local/bin です (MacPorts を使用したときにそこにインストールされました)

私の質問は、ファイル HelloWorld.rb にある次のかなり標準的な例の require 'tk' ステートメントに関連するエラー メッセージに関係しています。

require 'tk'
root = TkRoot.new { title "Hello world" }
TkLabel.new(root) do
    text 'Hello world!'
end
Tk.mainloop

コマンド ruby​​ HelloWorld.rb を呼び出すと、期待どおりの結果が得られます。プログラムが実行されます。

ただし、コマンド ruby​​1.9 HelloWorld.rb を呼び出すと、エラー メッセージが表示されます。

HelloWorld.rb:1:in require': no such file to load -- tk (LoadError) from HelloWorld.rb:1:in'

私はウェブやさまざまな投稿を検索してきましたが、これまでのところ、require 'tk' ステートメントを使用するときに ruby​​1.9 が tk を検出できるようにするために何をする必要があるかについての明確な説明を見つけることができませんでした。

gem1.9 コマンド ( /opt/local/bin にもある) の実行と関係がありますか?

sudo gem1.9 install tk を起動しようとしましたが、エラー メッセージ ERROR: could not find gem tk local or a repository が表示されます

どんな提案でも大歓迎です。

4

2 に答える 2

6

ruby の TK バインディングは (純粋な ruby​​ ではなく) コンパイルされたコードを使用するため、異なる ruby​​ バージョンには 2 つのインストールが必要です。

Darwinports は、デフォルトで TK をサポートする Ruby 1.9 をビルドしていません。tkまたはmactkバリアントのいずれかを選択する必要があります(ポートファイルを参照してください) 。

darwinports を使用してからしばらく経ちましたが、次の構文だったと思います。

port install ruby19 +mactk
于 2009-07-26T19:16:09.560 に答える
1

with-tcltk-framework呼び出しでフラグを使用して ruby​​ をコンパイルする必要があります./configure。詳細については、TkDocs - Tk のインストールページを参照してください。最初のセクションは Mac OS X で、Ruby のロゴが横にある部分はまさにあなたが必要としているものです。

注目に値するもう 1 つのことは、Tk に Ruby 1.9.x を使用しないことを Web サイトが推奨していることです。ただし、それが機能するかどうかを確実に知る唯一の方法は、自分で試してみることです.

于 2009-07-21T02:05:26.083 に答える