Rails 3.1 problem z javascript zawiera tag w aplikacji.html.erb

Stworzyłem czystą i prostą aplikację Rails 3.1 o nazwie demo1. Zawiera dwa kontrolery-hello I goodbye. Podczas próby załadowania pojawia się następujący błąd http://localhost:3000/say/hello : {]}

ActionView::Template::Error (
  (in /home/me/dev/ruby/demo1/app/assets/javascripts/say.js.coffee)):
    3: <head>
    4:   <title>Demo1</title>
    5:   <%= stylesheet_link_tag    "application" %>
    6:   <%= javascript_include_tag "application" %>
    7:   <%= csrf_meta_tags %>
    8: </head>
    9: <body>
  app/views/layouts/application.html.erb:6:in     
`_app_views_layouts_application_html_erb___558576499_89622220'

Problematyczna linia aplikacji.html.erb jest:

<%= javascript_include_tag "application" %>

Kiedy tworzyłem aplikację używając Rails 3.0 ta konkretna linia była:

<%= javascript_include_tag :defaults %>
I to zadziałało dobrze. W rzeczywistości, kiedy zmieniam aplikację.html.erb to use: defaults wszystko działa, ale chcę korzystać z nowych funkcji Rails 3.1.

Wydaje mi się, że nie mogę znaleźć nic na temat tego w Google, chyba dlatego, że Rails 3.1 właśnie został wydany.

Przy okazji, śledzę pierwszy rozdział Agile Web Development with Rails (4th edition) Updated for Rails 3.1 book.

Niektóre informacje środowiskowe, które mogą pomóc w odpowiedzi na to pytanie:

$ cat /etc/issue
Ubuntu 10.04.2 LTS \n \l

$ ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]

$ rails -v
Rails 3.1.0

Treść Powiedz.js.plik:

# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
Author: ryan, 2011-09-02

14 answers

Ok, rozgryzłem w czym tkwi problem, więc odpowiem na własne pytanie.

Problemem była aplikacja app/assets/javascripts/application.plik JS zawierał skomentowany kod. Jednak jedna z komentowanych linijek była następująca:

//= require_tree .

Kiedy kasuję ten wiersz wszystko działa dobrze.

Mam nadzieję, że to pomoże. Jeśli ktoś może podać jakiś wgląd, dlaczego podkreślenie powodowało problem, to byłoby świetnie.
 33
Author: ryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-05 07:16:08

Właśnie natknąłem się na ten problem podczas uruchamiania nowej aplikacji RoR 3.2.1. Problem polega na tym, że brakuje środowiska uruchomieniowego JS, co wynika z tego, że linia

# gem 'therubyracer'

W Twoim Gemfile ma to # przed sobą. Bóg jeden wie, dlaczego wysyłają szyny z tą skomentowaną linią, ponieważ każdy samouczek, który używa generate scaffold lub podobnych, spowoduje, że proces kompilacji zasobów potknie się o wygenerowany plik coffeescript.

Rozwiązaniem jest odkomentowanie tej linii. Instalacja innego środowiska uruchomieniowego JS może również rozwiązać problem. Zobacz np. ExecJS i nie można znaleźć środowiska uruchomieniowego JavaScript .

The official ruby on rails guide says:

Kompilacja CoffeeScript do JavaScript wymaga środowiska uruchomieniowego JavaScript, a brak środowiska uruchomieniowego spowoduje błąd execjs. Zazwyczaj Mac OS X i Windows są dostarczane z zainstalowanym środowiskiem uruchomieniowym JavaScript. Rails dodaje gem therubyracer do Gemfile w komentowanej linii dla nowych aplikacji i możesz go odkomentować, jeśli potrzebujesz. terubyrhino jest zalecanym środowiskiem wykonawczym dla użytkowników JRuby i jest domyślnie dodawany do Gemfile w aplikacjach generowanych w JRuby. W ExecJS możesz sprawdzić wszystkie obsługiwane środowiska uruchomieniowe.

 7
Author: Confusion,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:11

Po prostu usuń 2 linie z application.js

//= require turbolinks

//= require_tree

 3
Author: Talha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-06 00:02:34

Miałem ten sam problem z uruchomieniem rails 3.1.1

Po przywróceniu następującego kodu w moim Gemfile, mój problem zniknął:

group :assets do
  gem 'sass-rails',   '~> 3.1.4'
  gem 'coffee-rails', '~> 3.1.1'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

To zostało umieszczone w moim Gemfile podczas początkowego konfigurowania projektu, tzn. przy użyciu "rails new myapp".

Zauważ, że w moim pliku szablonu dołączam:

<%= javascript_include_tag :application %>

Hope that helps

 2
Author: DavB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-25 08:21:15

Jeśli korzystasz z systemu Windows i używasz RailsInstaller, aby uruchomić swój rozwój, musisz go użyć .plik bat dołączony do RailsInstaller do uruchomienia serwera. Nie możesz również użyć żadnego CMD Hooka, takiego jak conemu, aby uruchomić serwer, niestety.

 2
Author: Knyteguy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-03 00:12:30

Z korzyścią dla przyszłych Googlerów, poszedłem do króliczej nory próbując zainstalować therubyracer, dopóki nie natknąłem się na ten powiązany post:

ExecJS:: RuntimeError in rails 3.2.8 engine with javascript_include_tag

Wspomniany link wyjaśnia, że ExecJS jest nieprawidłowo skonfigurowany dla Windows 8 po wyjęciu z pudełka. W szczególności obejście opisane przez pottsk pomogło ja.

Https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952

Polega na zmianie sposobu, w jaki plik wykonywalny cscript jest uruchamiany przez ExecJS w %rubyinstall%\gems\2.0.0\gems\execjs-2.0.1\lib\execjs\runtimes.rb:

# JScript = ExternalRuntime.new(
#   :name        => "JScript",
#   :command     => "cscript //E:jscript //Nologo //U",
#   :runner_path => ExecJS.root + "/support/jscript_runner.js",
#   :encoding    => 'UTF-16LE' # CScript with //U returns UTF-16LE
# )

JScript = ExternalRuntime.new(
    :name        => "JScript",
    :command     => "cscript //E:jscript //Nologo",
    :runner_path => ExecJS.root + "/support/jscript_runner.js",
    :encoding    => 'UTF-8' # CScript with //U returns UTF-16LE
)

Jest rzeczą oczywistą, że nie jest to trwałe rozwiązanie, ale daje mi to możliwość działania do czasu włączenia poprawki.

 2
Author: camflint,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:20

Usunięcie //= require_tree spowoduje, że Twoje pliki javascript nie zostaną załadowane do rails. To prawdopodobnie zatrzyma błąd, ale prawdopodobnie nie to, co byś chciał.

Jednak w moim przypadku miałem kilka .js.coffee plików z nieprawidłowym wcięciem. Gdy to naprawiłem (usuwając je), działało.

 1
Author: thedanotto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-28 20:34:09

Kolejną rzeczą, którą możesz wypróbować, która zadziałała dla mnie, jest dodanie klejnotu json (i być może także YAJL-ruby) do swojego pliku Gemfile. Nie bardzo rozumiem dlaczego nie były jeszcze zainstalowane Bo:

Rails zależy od actionpack co zależy od zębatek co zależy od json i tilt

And tilt depends on yajl-ruby

Jednak wydaje się, że wiele zależnych klejnotów nie zostało zainstalowanych!?

 0
Author: billmccord,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-29 22:35:29

W przypadku korzystania z Linuksa(Ubuntu linux jak mój), zainstaluj JavaScript runtime. Najlepsze jest wydanie poniższego polecenia do instalacji,

Apt-get install nodejs

Albo dla każdego nowego projektu rails dodaj

Gem 'therubyracer' do twojego gemfile i uruchom bundle install

 0
Author: hariharan kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-12 17:48:00
devise_scope :user do
      get 'sign_out', :to => 'devise/sessions#destroy', :as => :destroy_user_session
   end

Jeśli Twoje trasy.rb ma powyższą linię po prostu usuń ją i uruchom. To właśnie poprawiło mój problem.

 0
Author: gautam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-28 19:54:23

Zmodyfikuj plik generatora (application.html.erb.tt) w następujący sposób:

<%= javascript_include_tag "application", "data-turbolinks-track" true %>
<%= javascript_include_tag :default, "data-turbolinks-track" true %>
 0
Author: kys48,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-17 02:01:42

Wystarczy usunąć następujący wiersz (linia nr 6) z pliku generatora (aplikacja.html."erb"): {]}

<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>

Proszę mnie zaktualizować, jeśli jest jakaś wada, Aby usunąć ten wiersz

Thanks

 0
Author: Skyfall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-11 11:16:59

Mam ten problem w Rails 4 i jeśli przełączę go na' defaults 'zamiast ' application', to działa, tak jak mówi OP. Ale to jest w zewnętrznym klejnocie, którego wolałbym nie edytować. Odkryłem, że jeśli zmuszę mój Gemfile do korzystania z wersji 1.8.0 coffee-script-source, wykonaj instalację pakietu i uruchom serwer, wtedy wszystko działa dobrze.

 0
Author: metaforge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-15 22:13:45

Dodanie klejnotu 'therubyracer' naprawiło problem. Błąd otrzymałem dopiero po dodaniu zewnętrznego pliku js przez

 0
Author: Tarun Reddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-02 12:33:28