ROR Ruby(JRuby)小技巧
安装ruby on rails,ruby为JRuby ,version 为1.7.0.在使用gem install rails命名安装rails时一直遇到connection refused(ruby on rails gem install = Error fetching ,connection refused)问题,经过在网络上搜寻同样问题,找到解决方案如下:
|
附上原文地址http://stackoverflow.com/questions/4418/how-do-i-update-ruby-gems-from-behind-a-proxy-isa-ntlm
重上可以看出造成此原因是因为网络问题,所以可设置proxy来解决,在windows上可以如下设置:
步骤 | 命令 |
---|---|
进入windows控制台(运行->cmd) | |
输入命令 | SET http_proxy = http://username:password@proxy_ip:port |
rails&jruby 连接sql server问题
今天使用rails连接sql server2008遇到一个非常棘手的问题,害的我整整解决了近乎一天的时间,因为开始使用的是jruby1.7.0 ,以为是版本过高,于是换成了jruby1.6.8.
最后解决了,发现这个和jruby的 版本没有多大关系,这个问题应该不是每个人都能遇见,和自己的电脑环境有很大关系。写在这里供以后有同仁遇到少走弯路。
本机连接sql server数据库环境
1. activerecorder-jdbc-adapter (1.2.2.1)
2. jruby1.6.8
3. java 1.7.0_02
4. database.yml配置
development: host: server adapter: jdbc username: user password: password driver: com.microsoft.sqlserver.jdbc.SQLServerDriver url: jdbc:sqlserver://server;databaseName=my_database |
问题 | 出现情况&原因 | 使用范围 | 解决方案 |
---|---|---|---|
出现连接com.microsoft.sqlserver.jdbc.SQLServerDriver 驱动失败,提示: 驱动出现未知错误,加载com.microsoft.sqlserver.jdbc.SQLServerDriver 时找不到该驱动 | 是因为自己电脑没有安装驱动和环境设置不正确 | 电脑环境比较干净,没有安装其他的与java相关的程式,这个问题可能会因为安装有其他程式,程式安装时自动配置,就不会出现 | 1.下载jdbc驱动包sqljdbc_4.0.zip 2.解压后拷贝sqljdbc4.jar java包到当前使用java的jre下面的lib/ext下面 3.在系统环境变量增加CLASSPATH ,值为..\Java\jreX \lib\ext\sqljdbc4.jar(此值为你的java安装路径下面的lib\ext路径) |
另一种方法是将sqljdbc4.jar拷贝到jruby的lib下面|
在一切都配置完毕以后,运行出现ActiveRecord::JDBCError , The driver encountered an unknown error: unable to choose type for timestamp from:"datetime2", "datetime" |
这是activerecord-jdbc-adapter的一个bug,但是另一个同仁max未出现,我们两个的版本不同,可能是(1.2.2.1)版本的问题。 | activerecorder-jdbc-adapter (1.2.2.1) | 编辑lib\arjdbc\jdbc\type_converter.rb ,如下:
|
WIN32OLE
JRuby
JRuby在1.6.X之后可以使用Win32OLE,可用下面方式设定
if defined ? RUBY_ENGINE && RUBY_ENGINE == 'jruby' require 'jruby-win32ole' else require 'WIN32OLE' end |
控制Excel
Word的方式也一样
require 'WIN32OLE' excel = WIN32OLE . new ( 'Excel.Application' ) excel.visible = true workbook = excel.Workbooks.Add(); worksheet = workbook.Worksheets( 1 ); worksheet.Activate |
截取Windows Process
if defined ? RUBY_ENGINE && RUBY_ENGINE == 'jruby' require 'jruby-win32ole' else require 'WIN32OLE' end wmi = WIN32OLE .connect( "winmgmts://" ) processes = wmi.ExecQuery( "select * from win32_process" ) for process in processes do puts "Name: #{process.Name}" puts "CommandLine: #{process.CommandLine}" puts "CreationDate: #{process.CreationDate}" puts "WorkingSetSize: #{process.WorkingSetSize}" puts end |
LDAP
net-ldap
@ldap = Net:: LDAP . new @ldap .host = "t1ldap.ad.garmin.com" @ldap .port = 389 @ldap .auth self .login+ "@garmin" , password # login, password puts "@ldap: " + @ldap .get_operation_result.to_s |
资讯交换平台和RichPOI内部系统有net-ldap和authlogic整合的code
rest-client
https://github.com/archiloque/rest-client
Simple HTTP and REST client for Ruby, inspired by microframework syntax for specifying actions.
response = RestClient.post " http://10.128.98.14:3001/user_sessions.json" , { :user_session => { :login => LOGIN , :password => PASSWORD }}.to_json, :content_type => :json , :accept => :json puts "response.code: " +response.code.to_s puts "response.to_str: " +response.to_s @cookie = response.cookies jdata = { :issue_record => { :comment => survey[ :comment ].to_s, :assign_user_id => _user.id, :end_timestamp =>survey[ :survey_done ]}}.to_json res = RestClient.put ' http://10.128.98.14:3001/issue_records/' +survey[ :issue_record_id ].to_s+ '.json' , jdata, { :content_type => :json , :cookies => @cookie } puts "res.code: " +res.code.to_s puts "res.to_str: " +res.to_s new_jdata = { :issue_record => { :issue_id => update_record.issue_id, :org_id => relate_record.org_id, :comment => "survey[#{survey[:issue_record_id]} complete!" , :user_id => _user.id , :assign_user_id => update_record.user_id, :priority => update_record.priority}}.to_json new_res = RestClient.put ' http://10.128.98.14:3001/issue_records.json' , new_jdata, { :content_type => :json , :cookies => @cookie } puts "new_res.code: " +new_res.code.to_s puts "new_res.to_str: " +new_res.to_s |
画图
image_voodoo(JRuby)
ImageVoodoo is an Image manipulation library with a ImageScience-compatible API for JRuby. Uses java.awt and javax.image APIs native to Java to perform image manipulation; no other dependencies needed.
ImageVoodoo.with_image( "c:\\original.jpg" ) do |img| img.thumbnail( 320 ) do |thumb| thumb.save "c:\\thumb.jpg" end end |
控制ImageMagick
About ImageMagick
JRuby - RMagick4J
Ruby - RMagick
gem PLATFORM == 'java' ? 'rmagick4j' : 'rmagick' require 'RMagick' |
Graphviz
用程式画流程图,还可以画state_machine的图
fusion-tables
for accessing Google Fusion Tables,Google Drive(Google Docs)的功能之一
@ft = GData::Client::FusionTables. new r= @ft .clientlogin( "xxxxxx@gmail.com" , "xxxxxx" ) puts @ft .show_tables @ft .show_tables.each { |_table| puts _table.id.to_s results = _table.select "*" , "WHERE ...." # select, conditions results .each {|r| puts r[:item] } } |
Sinatra -轻量化的web framework
可以用在提供简单功能的web service
require 'sinatra' get '/hi' do "Hello World!" end |
$ gem install sinatra $ ruby hi.rb == Sinatra has taken the stage ... >> Listening on 0.0.0.0:4567 |