2014-02-21 5 views
2

Я использую Rails и драгоценный камень mysql2. Есть ли способ, чтобы получить версию туздЫ сервера, как выполнив команду:Определить версию сервера mysql2 с использованием mysql2 Ruby gem

$ mysqld --version 
mysqld Ver 5.5.29 for osx10.8 on i386 (Source distribution) 

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

ответ

2

Вы можете получить информацию о версии в рельсах через ActiveRecord :: Base.connection. Я делаю это в консоли на рельсах. Я использую старую версию (2.2) рельсов, поэтому синтаксис может отличаться от вашего.

irb(main):190:0> ActiveRecord::Base.connection.select_rows("SHOW VARIABLES LIKE '%version%'") 
=> [["innodb_version", "5.5.34"], ["protocol_version", "10"], ["slave_type_conversions", ""], ["version", "5.5.34-0ubuntu0.12.04.1"], ["version_comment", "(Ubuntu)"], ["version_compile_machine", "x86_64"], ["version_compile_os", "debian-linux-gnu"]] 

После того, как вы получили это, вы можете вытащить информацию вы хотите, например:

version = ActiveRecord::Base.connection.select_rows("SHOW VARIABLES LIKE '%version%'").detect{|field,val| field == "version"}.last 
=> "5.5.34-0ubuntu0.12.04.1" 
+0

Отличная идея ... Спасибо! :-) – Abdo

1
def mysql_version 
    mysql_version_sql = 'SHOW VARIABLES WHERE Variable_name = "version"' 
    ActiveRecord::Base.connection.select_rows(mysql_version_sql)[0][1] 
end 

mysql_version #=> "5.5.35-0+wheezy1" 
Смежные вопросы