Chciałem rozpocząć naukę railsów od tego przewodnika http://apohllo.pl/guides/getting_started.html , ale mam problem na samym początku.
Chodzi o to, że gdy tworzę kontroler poprzez komendę ruby script/generate controller home index, to po uruchomieniu serwera(przed jej wywołaniem a także po) dostaję error gdy wchodzę na stronę http://localhost:3000/home/index (we’re sorry something went wrong).
System windows xp sp3
Ruby 1.8.7
Gems 1.3.7
rails 2.3.8
ruby i cała kompania instalowana wg tego co piszę na podstronie pobierz
I jeszcze jedno. Co trzeba przekazać do rubiego, żeby uruchomić fxri z własnego utworzonego skrótu a nie przez plik bat, gdzie musi pozostać uruchomione okno konsoli.
To może być milion problemów. Z 500 tys. potenzcjalnych problemów zaoszczędzisz sobie instalując Ruby na jakimkolwiek systemie uniksowym (Linux/MacOS X). Ale to było wałkowane w kółko na forum więc nie będę drążył.
Wkjel backtrace z ostatniego requestu, który masz w logs/development.log.
Na sam początek wygląda na to że twoja aplikacja uruchamiana jest w trybie produkcyjnym (wnioskując po komunikacie), a podczas pisania aplikacji powinna być w trybie developerskim.
http://www.williambharding.com/blog/rails/rails-scriptserver-command-line-options/
Co do systemu to prawda, sam zakupiłem dodatkowy, mały, dysk za grosze na którym postawiłem ubuntu, o wiele przyjemnej się pracuje.
Hmm teraz dostaje takie coś przy uruchamianiu localhost:3000/home/index.
[quote]E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_r
cord/connection_adapters/mysql_adapter.rb:201: [BUG] Segmentation fault
ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mingw32]
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application’s support team for more information.[/quote]
Miałem loga w development.log(z tego wynika że chyba jednak jest uruchomiona w trybie deweloperskim), ale pisało na początku że nie może załadować czegoś z sqlite a ja używam mysql. Wywołałem rails z opcją -d mysql i mam errora :D.
Ponadto przy użyciu tej opcji serwer pluje się, że port 3000 jest wykorzystywany.
Dobra bez opcji -d jest taki log
[quote]/!\ FAILSAFE /!\ Sun Jul 04 22:05:36 +0200 2010
Status: 500 Internal Server Error
no such file to load – sqlite3
E:/Program Files/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in gem_original_require' E:/Program Files/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
require’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in require' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:521:in
new_constants_in’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in require' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/core_ext/kernel/requires.rb:7:in
require_library_or_gem’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/core_ext/kernel/reporting.rb:11:in silence_warnings' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/core_ext/kernel/requires.rb:5:in
require_library_or_gem’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/sqlite3_adapter.rb:10:in sqlite3_connection' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:223:in
send’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:223:in new_connection' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:245:in
checkout_new_connection’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:188:in checkout' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:184:in
loop’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:184:in checkout' E:/Program Files/Ruby187/lib/ruby/1.8/monitor.rb:242:in
synchronize’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:183:in checkout' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:98:in
connection’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:326:in retrieve_connection' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:123:in
retrieve_connection’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:115:in connection' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/query_cache.rb:9:in
cache’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/query_cache.rb:28:in call' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in
call’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/string_coercion.rb:25:in call' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/rack-1.1.0/lib/rack/head.rb:9:in
call’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/rack-1.1.0/lib/rack/methodoverride.rb:24:in call' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/params_parser.rb:15:in
call’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/session/cookie_store.rb:99:in call' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/failsafe.rb:26:in
call’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/rack-1.1.0/lib/rack/lock.rb:11:in call' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/rack-1.1.0/lib/rack/lock.rb:11:in
synchronize’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/rack-1.1.0/lib/rack/lock.rb:11:in call' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:114:in
call’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/reloader.rb:34:in run' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:108:in
call’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/rails/rack/static.rb:31:in call' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/rack-1.1.0/lib/rack/urlmap.rb:47:in
call’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/rack-1.1.0/lib/rack/urlmap.rb:41:in each' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/rack-1.1.0/lib/rack/urlmap.rb:41:in
call’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/rails/rack/log_tailer.rb:17:in call' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/rack-1.1.0/lib/rack/content_length.rb:13:in
call’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/rack-1.1.0/lib/rack/handler/webrick.rb:48:in service' E:/Program Files/Ruby187/lib/ruby/1.8/webrick/httpserver.rb:104:in
service’
E:/Program Files/Ruby187/lib/ruby/1.8/webrick/httpserver.rb:65:in run' E:/Program Files/Ruby187/lib/ruby/1.8/webrick/server.rb:173:in
start_thread’
E:/Program Files/Ruby187/lib/ruby/1.8/webrick/server.rb:162:in start' E:/Program Files/Ruby187/lib/ruby/1.8/webrick/server.rb:162:in
start_thread’
E:/Program Files/Ruby187/lib/ruby/1.8/webrick/server.rb:95:in start' E:/Program Files/Ruby187/lib/ruby/1.8/webrick/server.rb:92:in
each’
E:/Program Files/Ruby187/lib/ruby/1.8/webrick/server.rb:92:in start' E:/Program Files/Ruby187/lib/ruby/1.8/webrick/server.rb:23:in
start’
E:/Program Files/Ruby187/lib/ruby/1.8/webrick/server.rb:82:in start' E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/rack-1.1.0/lib/rack/handler/webrick.rb:14:in
run’
E:/Program Files/Ruby187/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/commands/server.rb:111
E:/Program Files/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in gem_original_require' E:/Program Files/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
require’
script/server:3[/quote]
Czytałem coś, że na windzie mogą być problemy ;/. Jak się nic nie uda to zainstaluje linuksa.
Nie koniecznie jest prawdą że aplikacja uruchamia się w trybie production, widziałem takie komunikaty z różnych powodów również w development.
Znaczy to, że już masz uruchominą railsową aplikację.
Musisz zastopować poprzednią instancję aplikacji. CTR+C pewnie w okienku w którym ją włączyłeś?
Co do mysql/sql masz dwie opcje:
- Używać sqlite, polecenie:
gem install sqlite3-ruby
- Używać mysql, wtedy musisz zmodyfikować plik config/database.yml zgodnie z tym co jest napisane w punkcie 3.3.2 przewodnika.
Nie zrażaj się, co prawda Windows, to nie jest najwygodniejszy system do pracy z railsami, ale do nauki i pierwszych projektów jest szansa, że wystarczy.
[quote]Znaczy to, że już masz uruchominą railsową aplikację.
Musisz zastopować poprzednią instancję aplikacji. CTR+C pewnie w okienku w którym ją włączyłeś?[/quote]
Właśnie, że nie ;). Chyba jak wychodzi błąd serwera to on jakby się nie odłączał z tego portu.
Tak zrobiłem, ale jak używam mysql to mam segmentation fault ;/. localhost:3000 działa, localhost:3000/home daje to we are sorry but something went wrong, natomiast localhost:3000/home/index powoduje segmentation fault na serwerze.
Z sqlite w wersji 1.3 jest jakiś problem, też z nim walczyłem i ostateczni się poddałem odinstalowując ją i instalując 1.2.6 (choć może samo odinstalowanie wystarczy):
gem uninstall sqlite3-ruby
gem install sqlite3-ruby -v 1.2.6
nawet nie miałem zainstalowanego sqlite3, ale problem dotyczy mysql
jak znajdę czas to ściągnę i zainstaluje sqlite3, narazie pobrałem przez gem sqlite3-ruby wersja 1.3.0(jak narazie, jak to nie wypali to przeinstaluje na 1.2.6 jak piszesz)
Ściągnąłem dll’ke sqlite3 i ten przykład z kontrolerem działa, mam nadzieje że reszta też będzie chodzić ;). Dzięki za pomoc.