die Schaffung einer Steuerung in Rails
-
06-07-2019 - |
Frage
Ich versuche, das generieren Skript zu verwenden, um einen Controller zu erstellen. Ich führen Sie den folgenden Befehl ein:
> ruby script/generate controller Greeting
und die Steuerung scheint kein Problem erzeugt werden. Dann füge ich eine Methode zum GreetingController genannt Index:
class GreetingController < ApplicationController
def index
render :text => "<h1>Welcome to your first Rails application<h1>"
end
end
Ich beginne dann die WEBrick Webserver und direkt meinen Browser http://127.0.0.1:3000/ Gruß , aber ich erhalte eine Fehlermeldung im Browser zu sagen:
We're sorry, but something went wrong.
We've been notified about this issue and we'll take a look at it shortly.
Es ist zu arbeiten, zumindest nach dem Buch lese ich, Ruby on Rails von O'Reilly . Jede Idee, was schief gehen könnte? Das Buch wurde vor ein paar Jahren geschrieben, und ich bin mit, was wahrscheinlich eine neuere Version oder Rails. Irgendwelche Ideen?
UPDATE Hier ist, was in development.log ist:
/!\ 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 Ich habe die Anwendung durch den Aufruf:
rails /home/myuser/www/mynewapp -d mysql
Lösung
Sie sind nicht in der Lage, die MySQL-Datenbank-Treiber zu laden. Ich vermute, es nicht installiert ist. Sie könnten versuchen, diese:
sudo gem install mysql
Ich vermute aber, dass Sie haben wahrscheinlich nicht eine MySQL-Datenbank einrichten. Die meisten Leute benutzen sqlite3 für die Entwicklung. Ihre config / database.yml sollte wie folgt aussehen:
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
Wenn Sie nicht sqlite3 installiert haben nur laufen
sudo gem install sqlite3-ruby
Dann Migrationen laufen und Sie sollten alle gesetzt sein
rake db:migrate
Aktualisieren Ich gepostet hier, damit ich einige Formatierungen verwenden könnte.
In der Zukunft rufen Sie einfach an:
rails /path/to/app
Damit wird Rails die Standard-Datenbank verwenden, die sqlite3 ist. Anschließend können Sie die Produktionsdatenbank ändern, wenn / wenn Sie bereitstellen entschieden.
Viel Glück.
Andere Tipps
Rails übernimmt es eine Datenbank verwenden. Wenn Sie es nicht über eine gültige Verbindungszeichenfolge in database.yml geben, Drosseln es richtig aus dem Tor. Dies ist eine gültige Annahme, da jeder real Web-App wird eine Datenbank verwenden.
Aber, wenn Sie nur zu verwirren versuchen, um mit, wie die Ansichten und Controller arbeiten, können Sie die Datenbankfunktionalität vollständig deaktivieren. Um dies zu tun, fügen Sie diese zu Ihrer config / environment.rb:
config.frameworks -= [ :active_record ]
Von der kurzen Fehler, den Sie geschrieben haben, möchten Sie vielleicht prüfen, ob Sie die mysql gem installiert haben, wenn Sie auf den Einsatz von MySQL planen.
Wenn Sie auf Linux-Versuch:
gem install mysql
Es wird versucht, MySQL-Treiber zu laden. Haben Sie config / database.yml bearbeiten? Mine sieht wie folgt aus:
# 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
Auch wechseln zu Agile Web Development mit Rails, Third Edition. Es ist ein gutes Tutorial und funktioniert immer noch meist mit der neuesten Version von Schienen, auch wenn es für 2.2 geschrieben.
- Überprüfen Sie das Protokoll in Ihrem / log Verzeichnis. Es wird Ihnen viel geben bessere Fehlerinformationen.
- Meine Vermutung ist, dass Sie ein Doppel machen Fehler, wenn es darum - da du bist explizit machen nennen, die Sie benötigen eine return-Anweisung zu setzen nach dem machen Anruf. - Standardmäßig ist die Controller versucht, um die Ansicht zu rendern dass entspricht Ihren Controller nach des Controllers Verfahren abgeschlossen ist.