Pergunta

Eu estou tentando usar o script gerar para criar um controlador. Eu execute o seguinte comando:

> ruby script/generate controller Greeting

eo controlador parece ser gerado nenhum problema. Então eu adicionar um método chamado de índice para o GreetingController:

class GreetingController < ApplicationController
  def index
    render :text => "<h1>Welcome to your first Rails application<h1>"
  end
end

Eu, então, iniciar o servidor WEBrick web, e dirigir o meu navegador para http://127.0.0.1:3000/ saudação , mas recebo uma mensagem de erro no browser dizendo:

We're sorry, but something went wrong.

We've been notified about this issue and we'll take a look at it shortly.

Deve-se trabalhar, pelo menos de acordo com o livro que estou lendo, Ruby on Rails por O'Reilly . Qualquer idéia que poderia estar errado indo? O livro foi escrito há alguns anos atrás, e eu estou usando o que é, provavelmente, uma versão mais recente ou Rails. Alguma idéia?

Atualizar Aqui está o que está em 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'

FYI Eu criei o aplicativo chamando:

rails /home/myuser/www/mynewapp -d mysql
Foi útil?

Solução

Você não é capaz de carregar o driver de banco de dados MySQL. Eu estou supondo que ele não está instalado. Você poderia tentar o seguinte:

sudo gem install mysql

Eu estou supondo que embora você provavelmente não tem um banco de dados MySQL configurar. A maioria das pessoas utilizar sqlite3 para o desenvolvimento. O seu config / database.yml deve ser parecido:

development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

Se você não tem sqlite3 instalado basta executar

sudo gem install sqlite3-ruby

Em seguida, execute as migrações e você deve estar tudo pronto

rake db:migrate

Atualizar Eu postei isso aqui para que eu pudesse usar alguma formatação.

No futuro só chamar:

rails /path/to/app

Isso fará com que Rails usar o banco de dados padrão que é sqlite3. Você pode então alterar o banco de dados de produção, se / quando você decidiu implantar.

Boa sorte.

Outras dicas

Rails assume que você estará usando um banco de dados. Se você não dar-lhe uma seqüência de conexão válida em database.yml, que sufoca a direita do portão. Esta é uma suposição válida uma vez que qualquer real web app estará usando um banco de dados.

Mas, se você está apenas tentando mexer com a forma como os pontos de vista e controladores de trabalhar, você pode desativar a funcionalidade de banco de dados completo. Para fazer isso, adicione isso ao seu config / environment.rb:

config.frameworks -= [ :active_record ]

A partir do erro breve que você postou que você pode querer verificar que você tem a gema mysql instalado se você estiver planejando usar mysql.

Se você estiver em experimentar o Linux:

gem install mysql

Ele está tentando carregar o driver MySQL. Será que quis editar config / database.yml? Mina se parece com isso:

# 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

Além disso, mudar para Agile Web Development with Rails, Third Edition. É um bom tutorial e ainda trabalha principalmente com a última versão do Rails, embora seja escrito para 2.2.

  1. Verifique o log em seu log / diretório. Ele lhe dará muito melhor informação de erro.
  2. O meu palpite é que você está recebendo um duplo tornar erro - uma vez que você está chamando tornar explicitamente, você precisa para colocar uma instrução de retorno após a sua tornar chamada. - Por padrão, o controlador tenta processar a visão que corresponde ao seu controlador após método for concluído do controlador.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top