2012-03-02 17 views
1

ubuntuにインストールされたgem mysql2を入手しようとしていますが、私はすべての提案を試みましたが、実行することができません。私のアプリケーションのエラーは次のとおりです。mysql2とrubyに関する問題

./bla.rb:65:in `post_init': undefined method `query' for nil:NilClass (NoMethodError) 
    from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/em/timers.rb:51:in `call' 
    from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/em/timers.rb:51:in `fire' 
    from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `call' 
    from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine' 
    from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run' 
    from ./bla.rb:234:in `start_server' 
    from ./bin/minibardaemon:15 
    from /var/lib/gems/1.8/gems/daemons-1.1.8/lib/daemons/application.rb:254:in `call' 
    from /var/lib/gems/1.8/gems/daemons-1.1.8/lib/daemons/application.rb:254:in `start_proc' 
    from /var/lib/gems/1.8/gems/daemons-1.1.8/lib/daemons/application.rb:263:in `call' 
    from /var/lib/gems/1.8/gems/daemons-1.1.8/lib/daemons/application.rb:263:in `start_proc' 
    from /var/lib/gems/1.8/gems/daemons-1.1.8/lib/daemons/application.rb:295:in `start' 
    from /var/lib/gems/1.8/gems/daemons-1.1.8/lib/daemons/controller.rb:73:in `run' 
    from /var/lib/gems/1.8/gems/daemons-1.1.8/lib/daemons.rb:197:in `run_proc' 
    from /var/lib/gems/1.8/gems/daemons-1.1.8/lib/daemons/cmdline.rb:109:in `call' 
    from /var/lib/gems/1.8/gems/daemons-1.1.8/lib/daemons/cmdline.rb:109:in `catch_exceptions' 
    from /var/lib/gems/1.8/gems/daemons-1.1.8/lib/daemons.rb:196:in `run_proc' 

私は推奨されているパッケージをすべてインストールしましたが、mysql2はgem経由でインストールされましたが、運がまだありません。

libmysqlclient-dev 

がインストールされています。

Im on Ubuntu。

# gem -v 
1.3.7 

# ruby -v 
ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux] 

インストール宝石

# gem install mysql 
Building native extensions. This could take a while... 
Successfully installed mysql-2.8.1 
1 gem installed 
Installing ri documentation for mysql-2.8.1... 
Installing RDoc documentation for mysql-2.8.1... 



# gem install mysql2 
Building native extensions. This could take a while... 
Successfully installed mysql2-0.3.11 
1 gem installed 
Installing ri documentation for mysql2-0.3.11... 
Installing RDoc documentation for mysql2-0.3.11... 


    def create_mysql2 
    begin 
     mysql2 = Mysql2::EM::Client.new(
     :username => DBUSER, 
     :password => DBPASS, 
     :host  => DBHOST, 
     :port  => DBPORT, 
     :socket => DBSOCKET, 
     :database => DBNAME 
    ) 
     return mysql2 
    rescue Mysql2::Error => exception 
     $stderr.puts "Mysql Error: #{ exception.message }" 
     EventMachine::stop_event_loop 
    end 
    end 

...

begin 
    mysql2 = create_mysql2 
rescue Exception => ex 
    p ex 
end 

    # query the db every x seconds. 
    EventMachine::add_periodic_timer(QUERY_INTERVAL) do 
     defer1 = mysql2.query "SELECT * FROM table LIMIT #{QUERY_LIMIT}" 

答えて

1

本当にあなたbla.rbファイルの65'th行を表示してください可能性があり、mysql2宝石の問題のように見えませんか?おそらくそれを取り巻くいくつかの行があります。

実際には、何らかの理由でmysql2クライアントが初期化されていないようです。 私はこのような何かが動作するかどうかを確認するためにアドバイスします:minibar_usage状態=偽LIMIT FROM defer1 = mysql2.query「SELECT *:

require 'mysql2' 
mysql_client = Mysql2::Client.new(:host => "localhost", :username => "root") 
mysql_client.query('sql .. ') 

もしそうなら、あなたのスクリプト

+0

ライン65で問題が明確にあります#{QUERY_LIMIT} " - >質問をより多くのコードで更新しました。 –

+0

ありがとう、あなたは正しい方向に私を指摘しました - これは重要な問題でした:https://github.com/brianmario/mysql2/issues/112 - 毎回接続を開始する必要がありました。 –

関連する問題