相对于插件,我更喜欢gem的形式,今天在windows 上装will_paginate 和 mysql 两个gem包, 可是都失败了 , 尝试了
>gem install mysql (没添加任何source,默认从 "http://rubyforge.org/" 下) >gem install mysql --source "http://gems.github.com" >gem install mysql --source 'http://gemcutter.org'
最后都失败了 , 继续搜了一下 , 发现还有一个管理gem包的地方 http://rubygems.org,最后尝试
>gem install mysql --source 'http://rubygems.org'成功了,这过程中遇到了不少gem命令 , 再次正好总结一下:
升级ruby gem
>gem update --system
查看gem版本
>gem -v
查看gem版本,gems安装目录,remote sources等
>gem env
查看已经添加的remote sources
>gem sources
添加一个source
>gem sources -a 'htt://rubygems.org'安装一个gem包
>gem install will_paginate
指定源位置
>gem install will_paginate --source 'http://rubygems.org' >gem install will_paginate -s 'http://rubygems.org'
指定版本
>gem install rails -v=2.3.5
查看已经安装的全部gem包
>gem list
或者 gem list -d 查看具体的信息,例如project的author,homepage,安装在系统中的路径 等信息,建议加上该参数…
查看d开头的gem包
>gem list d
更详细的查看
>gem list will_paginate -d
卸载gem包
>gem uninstall rails
卸载指定版本
>gem uninstall rails -v=2.1.0
查找gem包
>gem search will_paginate --both (在local和remote源中search含有will_paginate关键字的) >gem list -r will_paginate >gem list -dr will_paginate (我常用这个)
查看gem包依赖其他的gem:
>gem dependency rails -v 2.3.5 Gem rails-2.3.5 actionmailer (= 2.3.5, runtime) actionpack (= 2.3.5, runtime) activerecord (= 2.3.5, runtime) activeresource (= 2.3.5, runtime) activesupport (= 2.3.5, runtime) rake (>= 0.8.3, runtime)
查看gem包的rdoc帮助
>gem server (然后http://localhost:8808查看)
windows 平台上安装
>gem install hpricot --platform=mswin32 # 不指定在windows安装会报错先不指定platform安装,如果不行的话,再指定platform
不安装ri 和 rdoc
>gem install hpricot --no-ri --no-rdoc
上了正式服务器上安装是不需要rdoc的,这样安装会省下很多时间
如果这些方法还是不行 , 可以到gem的网站上 , 例如rubygems.org 上搜gem包,然后下载到本地进行local安装
查看更多的gem帮助,可以 >gem -h
项目里常用gem命令
wxianfeng@wxianfeng-ubuntu:/usr/local/system/entos/netposa_redmine$ rake -T gems: (in /usr/local/system/entos/netposa_redmine) rake gems:build # Build any native extensions for unpacked gems rake gems:build:force # Force the build of all gems rake gems:install # Installs all required gems. rake gems:refresh_specs # Regenerate gem specifications in correct format. rake gems:unpack # Unpacks all required gems into vendor/gems. rake gems:unpack:dependencies # Unpacks all required gems and their dependencies into vendor/gems.
例如你enviroment.rb 中配置了paperclip gem
config.gem 'paperclip', '2.3.5'
那么 rake gems:install 将会安装paperclip 2.3.5 到你的ruby目录里, rake gems:unpack:dependencies 将会把依赖的gem包unpack 到vendor/gems 目录下,如果你是直接从gem包copy 到vendor/gems 目录下的话,需要执行 rake gems:refresh_specs 来生成 .specifications 文件
UPDATE:
默认安装已经不会再安装ri 和rdoc
here
效果:
最近在折腾vim 开发rails,以前用nb,puts 或者 p的语句在 nb的console中显示的颜色不一样(p出来的字体是黑色,其他Get,Post路径显示是红色),这样很容易就看到 调试 的p 后者 puts 语句,
可是用了 vim后,如果用rails.vim的:Rserver 启动后,看不到哪里有 console的任何信息,这个总不能让我到log里看吧, 于是只好在 shell 中ruby script/server的方式启动,这样就可以看到我的console下输出信息了,可是发现颜色都是一样的,这样很难定位我 p 的变量,那么我们可不可以 给它变个颜色呢,of course~!
刚开始想不要 plugin 实现,找到这编文章, 可是我没有成功,http://kpumuk.info/ruby-on-rails/colorizing-console-ruby-script-output/ , 后来就用了 highline gem
按照demo里的方法
say("<%= color('test color console', :blue) %>")这样用起来还是有点麻烦,
下面介绍我使用的办法,刚开始想重写ruby p的方法,让它p出来的字是带颜色的,后来想并不是好的办法,只好自己写个helper方法了。。。。。
使用步骤:
1,sudo gem install highline
2,rails 的helper 里 新建 share_helper.rb
require "rubygems" require "highline/import" module SharedHelper def p_start say("<%= color('<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<',:blue) + '\n' %> ") end def p_end say("<%= color('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>',:blue) + '\n' %> ") end end
3,application.rb 中添加 include ShareHelper
4,在action , helper, view 中可以调用p_start, p_end 方法了。。。例如这是在action中使用的demo:
@user = User.find(params[:id]) p_start p @user p_end
更多的demo, 请看这:
http://highline.rubyforge.org/svn/trunk/highline/examples/
ref:
http://highline.rubyforge.org/
http://raveendran.wordpress.com/2008/07/05/highline-ruby-gem/
http://www.ruby-forum.com/topic/141589
环境:
tor + windows
toonel.jar + linux
最近做了个自已用的 浏览器的 bookmarklet,可以一键 同步更新自己的 status(twitter,douban,xiaonei,kaixin001,meme等),这里以twitter为例,通过twitter api + 代理 更新自己的 tweets
1,windows 平台
(1)打开自己的tor 代理
(2)核心代码
def twitter email = '你注册的twitter email' password = '你的twitter密码' update_text = 'test status from twitter api by proxy' proxy_host = '127.0.0.1' # tor proxy_port = 8118 # tor 的http 端口是 8118 # toonel # proxy_port = 8080 proxy = Net::HTTP::Proxy(proxy_host, proxy_port) url = URI.parse('http://twitter.com/statuses/update.xml') proxy.start(url.host,url.port) do |h| # Create the POST request req = Net::HTTP::Post.new(url.path) req.basic_auth email, password req.set_form_data({'status' => update_text}) response = h.request(req) # Check the request's response if response.message == 'OK' puts response.body else puts 'failure' end end end
2,linux平台,下面这种方法windows同样适用,java是跨平台的
(1)打开 toonel.jar 代理
(2)把上面 的 port 改为 proxy_port = 8080
为了 blog的 安全 , 这里没有介绍 代理的方法,请自行google,当然代理的办法有很多,更新twitter的tweets 也有很多办法,可以根据自己的代理,自行修改代码~!