按照官方的wiki安装好JRuby、Rails以及需要的adapter、JDBC之后,我试着建了个rails项目,结果数据库建立不起来。执行rake db:create似乎一切正常,没有输出任何错误,结果一执行rake db:migrate就出错:
The driver encountered an error: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown database 'jrubydemo_development'
难道数据库没建建立起来?反复对照wiki看我的database.yml配置确定没有错之后,开始google,结果只见到人提问,没见到人解决。最后我去翻Rails的源代码,找到databases.task文件,发现原来它只认识'mysql',不认识'jdbcmysql'。如果把database.yml里的adapter改回'mysql',运行rake db:create的时候会找不到驱动,因为这样rails会去找C或者ruby写的mysql驱动而不是java的jdbc驱动:
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
最后解决的办法是,把"%jruby_home%\lib\ruby\gems\1.8\gems\rails-2.3.4\lib\tasks\databases.task"中所有的 when 'mysql'替换成when 'jdbcmysql'。
保存之后再来试试:
rake db:create
rake db:migrate
成功!
估计jruby上安装的rails跟ruby上安装的rails是同一个源,没有专门的jruby版。。
====================================================================
另外,又遇到个问题,好像JDBC驱动居然不认识longtext类型……
搜索了一下,解决办法在这:
http://kenai.com/projects/jruby/pages/Adding_Datatypes_to_ActiveRecord-JDBC
按这个办法试了试,不行。。
后来发现是因为默认生成的代码是这样的:
def self.up
create_table :blogs do |t|
t.string :title
t.longtext :content
t.timestamps
end
end
改成这样就行了:
def self.up
create_table :blogs do |t|
t.string :title
t.column :content, :longtext
t.timestamps
end
end
JRuby真蛋疼……睡觉。
p.s: JavaEye博客居然没有JRuby分类。。
分享到:
相关推荐
jRuby On Rails WEB 2.0
《JRuby on Rails Web 2.0 实用项目》 英文PDF + 源码
Netbeans 6.0 JRuby on Rails demo
JRuby on Rails Web 2.0 Projects
Netbeans 6.0 JRuby on Rails 演示 .swf
JRuby和Rails-让Ruby语言融入于Java项目
博文链接:https://mmm.iteye.com/blog/207300
jruby_on_rails 开发的很好例子,可以看看,有助与初学者入门
JRuby实验室JRuby的实验室是一个包含来自JRuby的示例和参考的存储库。 JRuby的主要传播网站- Wiki和文章一点JRuby历史 JRuby Wiki以及开始使用JRuby进行学习的方式 JRuby on Rails的Wiki部分 有关在JRuby中进行编程...
Heroku JRuby/Rails4 种子 该项目为在 Heroku 上运行的新 Rails 4 应用程序投影了一个模板。 来吧,部署它:
NetBeans Ruby and Rails IDE with JRuby 2009,大家看标题就知道了啊。。好东西啊,刚得到就发上来了。。
NULL 博文链接:https://digitalsonic.iteye.com/blog/504347
咖啡碱 当前由rwilliams维护 Theine是设计用于JRuby的Rails应用程序预加载器。 它类似于Zeus,Spring和Spork。 Zeus和Spring的问题在于它们使用了在JRuby上不起作用的`fork'。 time rails runner "puts Rails.env"48...
NULL 博文链接:https://digitalsonic.iteye.com/blog/261323
This new edition has new chapters on Puma, performance tuning, and Java integration, and is updated to the latest versions of JRuby 9k, Rails 4, and JDK 8. JRuby is a fast, scalable, and powerful ...