我正在尝试使用generate脚本来创建控制器。我运行以下命令:
> ruby script/generate controller Greeting
并且控制器似乎生成没有问题。然后我向GreetingController添加一个名为index的方法:
class GreetingController < ApplicationController
def index
render :text => "<h1>Welcome to your first Rails application<h1>"
end
end
然后我启动WEBrick Web服务器,并将浏览器指向http://127.0.0.1:3000/greeting,但我在浏览器中收到一条错误消息:
We're sorry, but something went wrong.
We've been notified about this issue and we'll take a look at it shortly.
至少根据我正在阅读的书,它应该是有用的,O'Reilly的 Ruby on Rails 。什么可能出错?这本书是几年前写的,我使用的可能是更新的版本或Rails。有什么想法吗?
UPDATE 以下是development.log中的内容:
/!\ FAILSAFE /!\ Sat Nov 28 22:11:12 -0500 2009
Status: 500 Internal Server Error
no such file to load -- mysql
/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:156:in `require'
仅供参考我通过调用
创建了应用程序rails /home/myuser/www/mynewapp -d mysql
答案 0 :(得分:2)
您无法加载MySQL数据库驱动程序。我猜它没有安装。你可以试试这个:
sudo gem install mysql
我猜你可能没有设置MySQL数据库。大多数人使用sqlite3进行开发。您的config / database.yml应如下所示:
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
如果您没有安装sqlite3,请运行
sudo gem install sqlite3-ruby
然后运行您的迁移,您应该全部设置
rake db:migrate
<强>更新强> 我在这里发布了这个,所以我可以使用一些格式。
将来只需致电:
rails /path/to/app
这将使Rails使用sqlite3的默认数据库。然后,您可以在决定部署时更改生产数据库。
祝你好运。答案 1 :(得分:2)
Rails假设您将使用数据库。如果你没有在database.yml中给它一个有效的连接字符串,那么它会在门外扼杀。这是一个有效的假设,因为任何真正的 Web应用程序都将使用数据库。
但是,如果您只是想弄乱视图和控制器的工作方式,则可以完全禁用数据库功能。为此,请将其添加到config / environment.rb:
config.frameworks -= [ :active_record ]
答案 2 :(得分:1)
根据您发布的简短错误,如果您打算使用mysql,可能需要检查是否安装了mysql gem。
如果你在linux上试试:
gem install mysql
答案 3 :(得分:0)
它正在尝试加载MySQL驱动程序。你编辑config / database.yml了吗?我看起来像这样:
# SQLite version 3.x
# gem install sqlite3-ruby (not necessary on OS X Leopard)
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
此外,切换到使用Rails的Agile Web Development,第三版。这是一个很好的教程,并且仍然主要使用最新版本的rails,即使它是为2.2编写的。
答案 4 :(得分:-1)