Ruby 1.9.1 and Rails 2.3 rc 1 on cygwin  

Posted by Mindlern in

总算是完成了ruby 1.9.1 和 rails 2.3 rc1 在cygwin 上的安装运行.

说说自己的安装经历吧(默认安装到/usr/local

首先安装cygwin

cygwin 安装的插件是

default + make + gcc + libiconv (后面编译需要) + openssl + git (从 github 拿gem 需要 当然也可以从网站直接下载) + vim (git 日

志使用)

cygwin下需要编译原文件

到ruby-lang(http://ruby-lang.org/) 下载ruby-1.9.1-p0.tar.gz

mkdir tmp

cd /tmp

将下好的gz 文件放到tmp文件夹

tar xvf ruby-1.9.1-p0.tar.gz
cd ruby-1.9.1-p0
./configure
make && make install

之后是sqlite3 (http://www.sqlite.org/download.html)
下载源代码
sqlite-3.6.10.tar.gz 放到tmp目录

tar xvf sqlite-3.6.10.tar.gz
mkdir bld
cd bld
../sqlite-3.6.10/configure -disable-tcl
make && make install
make sqlite3.dll
cp sqlite3.dll /usr/local/bin

最后是安装 sqlite3-ruby
gem install sqlite3-ruby (windows 死活搞不定的sqlite3-ruby 1.2.4

在说说 rails 2.3 rc 1 安装

gem install rake rack

gem install rails --source=http://gems.rubyonrails.org

rack 0.9.1 版不兼容 ruby 1.9.1 原因是 String.each method 被取消了

修改rack gem 目录下的
/lib/rack/handler/webrick.rb

原段落:
    vs.each { |v|
      res[k] = v
    }

改为:
    res[k] = vs

或者
到github 下载新的master 版
解压覆盖rack gem 目录下的文件

cd /usr/ruby/work
rails demo
cd demo
ruby script/server

此时提示找不到iconv.so (google 之后 似乎1.8.6以上版本不会自动生成iconv.so文件了
转到ruby 1.9.1 源代码处
cd /tmp/ruby-1.9.1-p0/ext/iconv
ruby extconf.rd  (如果之前cygwin 安装是没有选择libiconv 此处可能会有错误 再次运行cygwin安装文件 安装吧
会生成makefile
make
生成iconv.so 文件

make install
或者
cp iconv.so /usr/local/lib/ruby/1.9.1/i386-cygwin/

再次cd /usr/ruby/work/demo
ruby script/server
这次提示找不到openssl

openssl.so 文件安装方法同iconv.so

搞定之后

ruby script/server


转到浏览器
127.0.0.1:3000

可以看到rails 页面了

About your aplication's environment

Ruby version    1.9.1 (i386-cygwin)
RubyGems version    1.3.1
Rails version    2.3.0
Active Record version    2.3.0
Action Pack version    2.3.0
Active Resource version    2.3.0
Action Mailer version    2.3.0
Active Support version    2.3.0
Application root    /cygdrive/d/ruby/work/test/app
Environment    development
Database adapter    sqlite3
Database schema version    0

Ok


暂时扔了mswin32 version of ruby 1.9.1  

Posted by Mindlern in

玩mswin32 版 ruby 1.9.1 没辙
rails 2.3 rc 1 安装正常
rack 0.9.1 修改后正常

但是这该死的数据库连接问题

sqlite3-ruby 1.2.3
与ruby 1.9.1 不兼容

曾经rails 2.3 rc1 报错 each Method
body.each 那行
害我修改啥的 弄半天
以为是rack问题
结果去翻日志
原来还是 sqlite3 driver 没有找到

想说放弃sqlite3 到mysql

mysql-ruby 2.8.1 兼容1.9.1 但无奈是windows
我没有安装编译环境

再到mysql 2.7.3
安装成功 但使用不成功
老是提示 specified module could not be found  大概这样的信息(具体忘了
查了PATH
mysql bin folder 在
ruby bin 也在
libmySQL.dll 也有放到相关目录
老是错误

真的放弃了

投靠cygwin 去

ps.jruby 也是真的好啊
jdbc 无论是sqlite3 还是mysql 都是直接安装的


sqlite3-ruby 1.2.3 与 ruby 1.9.1 不兼容  

Posted by Mindlern in

 无奈windows 环境下
 sqlite3-ruby 没有1.2.4 编译
 只能安装1.2.3
 看作者的BLOG
 Windows 编译工作给他造成很大麻烦
 停止后续版本的windows 编译工作
 征求其他人帮忙编译
 不过结果似乎不太好呢

 1.2.4 版 看反馈(都是MAC OS 平台的
 没有问题呢
 改道Mysql去

Rails 2.3 rc 1 command error under windows using cmd  

Posted by Mindlern in

测试rails 2.3  rc1
使用ruby 1.9.1

在cmd
执行rails -v
得到 The filename,directory name or volume label syntax is incorrect.

解决办法(solution)

打开ruby.bat
会看到
@"ruby.exe"" "D:/ruby/ruby 1.9.1/bin/rails" %1 %2 %3 %4 %5 %6 %7 %8 %9

@"ruby.exe"" "%~dpn0" %*


这里有两个双引号

改为

@"ruby.exe" "D:/ruby/ruby 1.9.1/bin/rails" %1 %2 %3 %4 %5 %6 %7 %8 %9

@"ruby.exe" "%~dpn0" %*


cmd rails -v

就正常了

sqlite3 使用jdbc 连接  

Posted by Mindlern in

Jruby 使用jdbc 来连接数据库

首先需要这两个GEM
  jdbc-sqlite3
  activerecord-jdbcsqlite3-adapter

gem install jdbc-sqlite3
gem install activerecord-jdbcsqlite3-adapter

使用默认的rails 脚本生成project
定位到config 目录下的database.yml
修改 adapter 这行为jdbcsqlite3
即可使用数据库了

++++++++++
jruby script/server

http://localhost:3000/rails/info/properties
显示正常就表示OK

e-text 试用感觉太爽了  

Posted by Mindlern in

写ROR,之前一直使用netbeans,因为只能,但是速度真的是很慢。在我的笔记本上,感觉尤为明显,特别是智能提示,找个method,要卡上几秒,不甚爽。关了智能提示吧,那还用netbeans干啥,一大特色功能啊,再加上启动慢,感觉更不好。

就寻到e,号称windows下的textmate,Macos 程序员使用textmate,让我手馋很久了,无奈没有Macos,安装黑苹果,失败了N次,就算了。想来浪费时间安装N次,还是攒钱买个MACBOOK,也当激励自己。

+++++++++回到正题+++++++++
e 试用1天了
感觉真的很棒
代码片段很爽
关键速度很快
小巧 启动好

内置大量bundles
包含RUBY ROR
编写速度上去了

39刀 也不是很贵
比textmate 便宜
如果macbook 没到手
就e用着吧

+++++++++++++++
关于e安装报错问题
看提示 应该是字符造成的
在网上看倒的解决方法

1、都忽略
然后下载textmate bundles 覆盖一边
2、到控制面板-语言区域-有个非unicode 字符显示
中文系统 默认是中国 简体
把它改为英文 美国

需要重启

重启后 安装就不会报错了
完成后再改回去

+++++++++
e 需要cygwin
以这次高级应用
最麻烦的还是这个
国内碰到cygwin
安装非常麻烦
速度真是慢啊
找个新加坡镜像
重试N次还没有安装成功
该死的网速

继续下载中T_T

rails firefox ActionController::InvalidAuthenticityToken  

Posted by Mindlern in

写了个简单的应用(不过是早期阶段

在提交表格到数据库的时候
出现 ActionController::InvalidAuthenticityToken 该错误
GOOGLE 之

原来是rails 防御跨站点攻击检测导致的(还特别是firefox有问题 IE正常...

http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html#M000693

找到上述官方文档

一种解决办法是
整个关闭

在environment.rb中添加
config.action_controller.allow_forgery_protection = false
还有就是到controller 排除
以下是官方给的example

class FooController < ApplicationController

# uses the cookie session store (then you don't need a separate :secret)
protect_from_forgery :except => :index
# uses one of the other session stores that uses a session_id value.
protect_from_forgery :secret => 'my-little-pony', :except => :index
# you can disable csrf protection on controller-by-controller basis:
skip_before_filter :verify_authenticity_token
end
我的情况是create 这action 出错
直接 protect_from_forgery :exception => :create 搞定
这下正常了