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
War es hilfreich?

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.

  1. Überprüfen Sie das Protokoll in Ihrem / log Verzeichnis. Es wird Ihnen viel geben bessere Fehlerinformationen.
  2. 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.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top