a criação de um controlador em trilhos
-
06-07-2019 - |
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
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.
- Verifique o log em seu log / diretório. Ele lhe dará muito melhor informação de erro.
- 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.