Ruby Class 500 Error - PullRequest
       1

Ruby Class 500 Error

0 голосов
/ 28 октября 2010

Почему это не правильно. Что не так с этим ??

#!/usr/bin/ruby

require "mysql"

class Game
  attr_accessor :id, :name, :urlName, :description, :hits, :categorys, :width, :height, :nilGame

  def load(id)
    #Load mysql
    begin
        # connect to the MySQL server
        con = Mysql.new('localhost', 'user', 'pass', 'database')
    rescue Mysql::Error => e
        puts "mysql error"
        ensure
        # disconnect from server
        con.close if con
    end
    rs = con.query("select * from games where id='#{id}' limit 1")
    rs.each_hash do |row|
      if row['id'].nil
        @nilGame = true
      else
            @id = id
            @name = row['name']
            @urlName = row['urlname']
            @description = row['description']
            @hits = row['hits']
            @categorys = row['categorys']
            @width = row['width']
            @height = row['height']
      end
    end
    con.close
  end
end

Ответы [ 2 ]

1 голос
/ 28 октября 2010
  1. ensure вызывается всегда, независимо от того, было ли вызвано исключение или нет. Таким образом, вы пытаетесь запросить закрытое соединение. Так что удалите con.close из обеспечения. Вы можете захотеть return отсюда, так как невозможно запросить нулевой объект.
  2. Возможно, вам нужно require 'rubygems' в начале, до require 'mysql' (если он работает как независимый файл)
  3. if row['id'].nil должно быть if row['id'].nil?
0 голосов
/ 28 октября 2010

Вместо того чтобы кодировать свой собственный адаптер MySQL, попробуйте ActiveRecord, DataMapper на любом другом ORM, чтобы облегчить свою жизнь.

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