设为首页 收藏本站
查看: 1116|回复: 0

[经验分享] Ruby On Rails Connection To MicroSoft SQL Server [Part 2]

[复制链接]

尚未签到

发表于 2018-10-17 10:55:20 | 显示全部楼层 |阅读模式
  在上一篇Ruby On Rails Connection To MicroSoft SQL Server[Part 1]中我提出关于ROR[Ruby on Rails]连接MSSQL的几个问题.一方面由于篇幅过长怕看着容易疲劳. 另外一方面当时确实没有解决问题的具体头绪和思路. 当时也翻阅大量资料,足足也郁闷一个上午.既然出现了问题,通过在Ruby Guides社区和多位SunSky_Grouper成员交流后.终于获得相关说明和解决方案.这个问题也是很多RoR Developer经历Rails版本迭代后出现一系列常见问题.本篇主要目的是解决前一篇提出几个问题.并以一个初学者摸索态度对ROR连接MSSQL细节加以详细的说明和概述.我会尽自己最大努力来保证文章在技术上严谨和准确性.如有纰漏或错译 请及时指出 我会及时更正并不断加以完善.
  A:准备工作
  可以说很多ROR的Developer都会因为版本迭代引发一系列问题.所以在进行编程有效测试前.我个人觉得非常有必要说明ROR开发环境参数:
DSC0000.png

  在和Grouper成员交流时.我也相关询问他们对于在实际Team coding时如何控制RoR的版本问题.TeamWork时他们会利用一个控制RoR版本更新工具进行各成员之间关联.[当然他们并没有给我看这个工具] 有点类似VSS对源码管理.当实际项目中真需要更新时统一的把项目组成员所有开发环境进行升级. 但是从他们口中我也得知他们对ROR版本升级态度也相当的忌讳的. 一方面出于对产品运行环境稳定和可依赖性考虑. 另外一个就是他们一直在强调使用ROR的初衷 High Efficiency -高效和TeamWork Disengaged 团队合作的自由.
  在和这些国外开发人员进行简短交流时. 我们也可以"管中窥豹" 大概能看出他们在实际项目编码中对RoR版本问题相关处理.
  B:问题解决
  ADO.RB文件在0.4.0版本中无法找到?
  上一篇中我提出一个RoR连接MSSQlServer时需要ADO.rb文件在最新的0.4.0—0.4.3四个版本中始终无法问题?
  针对这个问题有多个来源: 一方面有些刚接触ROR Dvper通过入门时也发现同样问题.因为这本书在06年出版.当时DBI最新版本是0.2.1DBI才是和书中进行对应的. 这也就到导致网上很多Copy版本都在统一说 下载最新的DBI. 而历经几年发展目前DBI已经发展到0.4.3DBI. 所以在下载之前官方已经提示查看相关的修改日志Release Note/ChangeLog:来查看如何发生哪些变化:
DSC0001.png

  在0.2.0—0.2.2版本中ADO.Rb文件都是存在.但是从0.4.0后ADO.RB文件就无法找到. 我们来看一下官方在这0.4.0版本间修改日志:
DSC0002.png

  you See.在第五条明确提出从0.2.0版本后停止ADO开发并删除相关的目录,Ruby分发包不会安装DBI的ADO驱动,只能在0.2.2版本及之前的版本以前找到相关的ADO.rb文件.
  这也就能够解释为什么在0.4.0—0.4.3版本中无法找到ADO.RB文件的原因.
  至此这个ADO.RB文件关于版本问题算是彻底搞清楚 是怎么回事.下一步来测试ROR 连接SQLServer数据库
  连接SQLServer数据库
  首先说明连接SQLServer数据库的版本是MSSQLServer 2005[开发版],上一篇已经很详细说明连接前的相关配置等信息.当然如果你觉得接触过RedRails这款编译工具 也没有关系. 你可以直接打开CMD输入创建命令格式:
DSC0003.png

  在CMD中Rails快速为我们创建批量文件:
DSC0004.png

  创建完成后需要在Config/database.yml简短的修改一下Develop开发环境数据库配置:
DSC0005.png

  注意上面利用RedRails工具来对DataBase.yml文件进行修改配置. 利用工具直接保存如果没有异常则可以证明与底层SQLServer数据库链接成功.
  当然如果你没有下载RedRails这款工具也没有关系, 我们可以用Ruby一个测试数据库链接的RubyConDB来测试:
  


  • require 'dbi'

  • #add ADO.rb to $RUBY_HOME/lib/ruby/site_ruby/1.8/DBD/ADO
  • DBname = 'master'
  • username = 'sa'
  • password = ''
  • url = "DBI:ADO:Provider=SQLOLEDB;Data Source=127.0.0.1,1433;" \
  •           + "Initial Catalog=#{DBname};User Id=#{username};Password=#{password};"

  • conn = DBI.connect("#{url}")
  • conn.disconnect
  

  当然这只是为了测试SQLSErver链接状态.对安全编码上名没有做任何控制. 在实际编码一般采用定义一个RubyConDB类来测试数据库链接:
  


  • require 'dbi'

  • class RubyConDB
  • attr_reader :name
  • def initialize(name, username, password, database)
  •   @server_name=name
  •   @username = username
  •   @password = password
  •   @database = database
  •   @dbh=DBI.connect("DBI:ADO:Provider=SQLNCLI;Data Source=#{name};Persist Security Info=False;User ID=#{@username};password=#{@password};Initial Catalog=#{database};")
  • end

  • def databases
  •   db=Array.new
  •   @dbh.select_all('SELECT name FROM master.sys.databases ORDER BY 1') do | row |
  •    db.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-622715-1-1.html 上篇帖子: Ruby On Rails Connection To MicroSoft SQL Server[Part 1] 下篇帖子: 安装sql server 2008 R2数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表