2016-07-25 3 views
-1

Я пытаюсь позвонить своему методу check_table_exists для проверки таблицы. Этот метод находится в моем модуле, и я не понимаю, почему я получаю эту ошибку.Неопределенный метод вызова метода в классе

Я знаю @connexion - это экземпляр Mysql2 :: Client, который не включает в себя модуль Sgbd. но я не вижу, как включить мой метод?

./yamlReadFile.rb:44:in `mysql_connection': undefined method `check_table_exists' for #<Mysql2::Client:0x000000033a7750> (NoMethodError) 

$LOAD_PATH << '.' 
require 'yaml' 
require 'rubygems' 
require 'mysql2' 
require 'creatDatabase' 

#binding.pry 
class StreamMysql 
include Sgbd 
def mysql_connection(conf) 
     @connexion = Mysql2::Client.new(:host => conf['ost'], :username => conf['user'], :password => conf['password'], :table => conf['table'], :port => conf['port']) 
     if @connexion 

     puts check_table_exists 
     @connexion.check_table_exists 

     puts "connexion etablie" 

     else 
     puts "error connexion" 
     end 


     rescue Mysql2::Error => e 
      puts e.errno 
      puts e.error 
     @connexion.close 
end 

def read_config_file 
     config = YAML::load_file(File.join(__dir__, 'config.yml')) 
     conf = config['database'] 
     mysql_connection(conf) 
end 


end 

мой модуль файлы с mehode check_table_exists

module Sgbd 

# class ModuleCreateDatabase 

    def create_database 

    end 

    def check_table_exists 
     query=("SHOW TABLES;") 
    end 

end 

ответ

0

Неясно, почему вы хотите, чтобы включить свой модуль в иностранном классе, но это выполнимо:

Mysql2::Client.include Sgbd 

строка выше должна быть указана e. г. перед объявлением class StreamMysql.

+0

Мне нужен класс для подключения и модуль для задачи типа (выберите, обновите, создайте и т.д. ... – Oliver

Смежные вопросы