文档章节

Ruby安装并连接数据库

Mr_蜗牛
 Mr_蜗牛
发布于 2015/09/02 21:34
字数 881
阅读 238
收藏 4

    在公司工作中不可避免的需要洗数据、校验数据。这个时候会发现会脚本真的酷毙了。看着公司的大牛用的是Ruby就试着用了下。并记录如下:

第一 安装

    首先简单介绍下安装吧:

使用rvm(Ruby Version Manager一款非常好用的ruby版本管理以及安装工具)你会发现Ruby安装真的是It's so eary

(1)安装rvm:

  网上说的安装命令是curl -L get.rvm.io | bash -s stable

  但是发现不行,正确命令是

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

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

(2)安装ruby

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

    安装一个指定版本: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模式啦......

© 著作权归作者所有

Mr_蜗牛
粉丝 9
博文 18
码字总数 10865
作品 0
长宁
私信 提问
ruby中DBI连接MySQL数据库步骤详解

1、准备工作。 首先下载DBI接口:http://rubyforge.org/frs/download.php/12368/dbi-0.1.1.tar.gz 在Windows下面同样的可以使用,解压以后放入ruby目录,如:C:rubyruby-dbi下。 2、安装mys...

BravoZu
2012/10/24
0
0
Ruby + Redmine 简单安装配置

1.安装ruby 选择Ruby 2.1.0版本。 是个tar包。下到本地,解压。 进入到解压之后的目录 ./configure --prefix=/opt/local/ruby make && make install 其中,/opt/local/ruby是你要安装ruby的目...

Nox
2014/02/21
0
0
Rails 连接 MySQL 数据库问题

近日,维护一个ror框架搭建的网站。有时页面访问会出现internal error(redmine 500)的错误。正常情况,刷新一下,页面就正常了,有时刷新也不行,一直处于加载状态,只能重启apache。 报错...

whjwssy2017
2017/12/13
0
0
Ruby连接MySQL数据库的一般步骤

这段时间在学习Ruby,只是刚才入门而已。 正好今天学习ruby的持久化方式,使用的是MySQL数据库。按照书本的方式,仅仅的require “mysql” (引人mysql)发现报找到不到mysql文件。网上百度才知...

BravoZu
2012/10/23
0
0
脱离Rails使用ActiveRecord

ActiveRecord是Ruby的对象-关系映射(ORM)框架,它几乎总是被视为Rails框架的一部分,但其自身也是一个实体,可通过gem单独安装和使用。本文以访问Sqlite3为例,介绍如何在Rails框架之外使用...

redraiment
2014/02/11
0
2

没有更多内容

加载失败,请刷新页面

加载更多

高并发场景下的缓存有哪些常见的问题?

一、缓存一致性问题 当数据时效性要求很高时,需要保证缓存中的数据与数据库中的保持一致,而且需要保证缓存节点和副本中的数据也保持一致,不能出现差异现象。 这就比较依赖缓存的过期和更新...

别打我会飞
16分钟前
1
0
List list = new ArrayList()为何父类引用指向子类对象(多态)

态:要有继承,方法的重写,父类引用指向子类对象 疑问一:父类引用指向子类对象 与指向父类对象 Animal cat = new Cat(); //向上转型。 父类引用指向子类对象,该引用不能再访问子类新增加的...

architect刘源源
16分钟前
0
0
分而治之-快速排序

快速排序的思想: 快速排序首先在数组中确定1个枢纽项(比如数组中的第一个元素),将大于该枢纽项的元素放到右侧,小于该枢纽项的元素放到左侧,这样枢纽项将数组划分成两部分。接着继续对划...

万山红遍
今天
4
0
Qt编写自定义控件9-导航按钮控件

前言 导航按钮控件,主要用于各种漂亮精美的导航条,我们经常在web中看到导航条都非常精美,都是html+css+js实现的,还自带动画过度效果,Qt提供的qss其实也是无敌的,支持基本上所有的CSS2属...

飞扬青云
今天
3
0
Python开发工具:pyJasper

原文:https://www.oschina.net/p/pyjasper 前言 pyJasper是 JasperReports 网络服务器的 Python 客户端。 pyJasper 是一组 Python 基础工具,可以用来处理 JasperReports 报表 。因为 Jasper...

A_裙232550246
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部