Проблемы с MySQL с и Ruby - PullRequest
1 голос
/ 02 марта 2012

Попытка установить gem mysql2 в Ubuntu, и я попробовал все предложения, но не могу запустить его. Вот ошибка в моем приложении.

./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

Установлено.

Я в 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 Ответ

1 голос
/ 02 марта 2012

не похоже на проблему с самоцветом mysql2, не могли бы вы показать 65-ю строчку из вашего bla.rb файла? И, возможно, какое-то количество линий, которые его окружают.

похоже, ваш клиент mysql2 по какой-то причине не инициализирован. Я бы посоветовал проверить, работает ли что-то подобное:

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

если это так, в вашем скрипте явно есть проблема

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...