Ruby安裝並鏈接數據庫

    在公司工做中不可避免的須要洗數據、校驗數據。這個時候會發現會腳本真的酷斃了。看着公司的大牛用的是Ruby就試着用了下。並記錄以下:java

第一 安裝mysql

    首先簡單介紹下安裝吧:git

使用rvm(Ruby Version Manager一款很是好用的ruby版本管理以及安裝工具)你會發現Ruby安裝真的是It's so earygithub

(1)安裝rvm:sql

  網上說的安裝命令是curl -L get.rvm.io | bash -s stable數據庫

  可是發現不行,正確命令是ruby

curl -k  https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer | bash -s stable

   好了。默默的等着他安裝rvm吧。安裝好rvm其實就基本上就KO了。下面安裝Ruby吧!bash

(2)安裝rubyssh

    查看已有的ruby版本:rvm list knowncurl

    安裝一個指定版本:rvm install 2.2.1

    使用指定版本並設置爲默認:rvm use 2.2.1 --default

    查詢已經安裝的ruby: rvm list

    卸載一個已安裝版本: rvm remove 1.9.2

    在使用rvm安裝Ruby時會自動給咱們安裝上一個叫RubyGems(簡稱 gems)的東東。它用於對 Ruby組件進行打包的 Ruby打包系統。 可是 必須支出的是我國的特殊狀況,在使用gems可能超時須要咱們修改鏡像

(3)修改鏡像

使用命令gem source --add 'http://ruby.taobao.org/' 修改爲淘寶的鏡像。

gem source -l 命令查看鏡像

更詳細的請看:http://ruby.taobao.org/

    好了至此安裝完成了。

第二 經過ssh鏈接mysql

    我本覺得能夠開啓我Ruby的神之旅時被卡住了卡死了。由於公司對線上的機器所有采用的是跳板機。鏈接時連不上啊。網上找教程各類坑啊。都是一份代碼反覆複製唉!讓咱們這些菜鳥怎麼學習啊!!!我要在本地(A)經過跳板機(B)鏈接數據庫機器(C)。怎麼玩都玩不轉啊。我閉關苦思冥想了幾天仍是無法解決。神同樣的Ruby之旅難道就次卡住.....NO今每天一道紫色閃電劃過天空。我懂了...記錄以下

(1)安裝各類插件(我是這麼理解的)

使用gem命令安裝插件:在 https://rubygems.org/ 上搜索你想要的插件

想鏈接mysql至少得安裝mysql鏈接插件吧:

gem install mysql2

固然這樣的前提是你安裝了mysql並配置好了環境。若是你本身本地沒有安轉好。我只能說若是成功純屬巧合。

想要進過跳板機只是得安裝net-ssh-gateway吧

gem install net-ssh-gateway

(2)敲代碼吧

新建一個.rb的文件寫吧:

# encoding: utf-8
require 'rubygems'
require 'mysql2'
require 'net/ssh/gateway'

begin
  puts "Initializing Ruby Program"
  puts "Initializing ssh"
  @gateway = Net::SSH::Gateway.new(
    'HostB',
    'User',
    :password => '********',
    :port => '22'
  )
  @port = @gateway.open('HostC',3306,3307)#注意3306是你數據庫的端口號至於3307是隨便選的,只要沒被佔用
  if @gateway.active?
    puts "ssh success connect"
  end

  puts "Initializing mysql"
  @client = Mysql2::Client.new(
      host:'127.0.0.1',#注意這裏是本地不用改的。我就是改了這兒才被坑的啊
      username:'root',
      password:'mysqlpassword',
      database:'DB',
      port:@port
  )
  puts "connected mysql"

  res = @client.query("SELECT * FROM T_XXXXX")
  puts "The count #{res.count}個"
  puts "The fields of the res:#{res.fields}"
  puts "The each row:"
  i=0;
  res.each do |row|
    i+=1
    puts "第#{i}行#{row}"
  end

  puts "close mysql"
  @client.close
  puts "free ssh"
  @gateway.close(@port)
  @gateway.shutdown!
  puts "Terminating Ruby Program"
end

注意HostB:跳板機的hostHostC:數據庫的host

至此終於能夠開始我之後寫Ruby腳本的裝B模式啦......

相關文章
相關標籤/搜索