wake-up-neo.net

Rails ExecJS :: ProgramError in Pages # home?

Beim Starten einer neuen App erhalte ich die folgende Fehlermeldung, wenn ich eine Startseite für die Controller-Seite erstelle und versuche, zum lokalen Host: 3000/pages/home zu wechseln.

Showing c:/Users/Doesha/desktop/pinplug/app/views/layouts/application.html.erb where line #6 raised:

TypeError: Object doesn't support this property or method
  (in c:/RailsInstaller/Ruby2.1.0/lib/Ruby/gems/2.1.0/gems/turbolinks-2.5.3/lib/assets/javascripts/turbolinks.js.coffee)

datei "application.html.erb":

<!DOCTYPE html>
<html>
<head>
  <title>Pinplug</title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>
</head>
<body>

<%= yield %>

</body>
</html>

datei "application_controller.rb":

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception
end

datei pages_controller.rb:

class PagesController < ApplicationController
  def home
  end
end

datei routes.rb:

Rails.application.routes.draw do
  get 'pages/home'

  # The priority is based upon order of creation: first created -> highest priority.
  # See how all your routes lay out with "rake routes".

  # You can have the root of your site routed with "root"
  # root 'welcome#index'

  # Example of regular route:
  #   get 'products/:id' => 'catalog#view'

  # Example of named route that can be invoked with purchase_url(id: product.id)
  #   get 'products/:id/purchase' => 'catalog#purchase', as: :purchase

  # Example resource route (maps HTTP verbs to controller actions automatically):
  #   resources :products

  # Example resource route with options:
  #   resources :products do
  #     member do
  #       get 'short'
  #       post 'toggle'
  #     end
  #
  #     collection do
  #       get 'sold'
  #     end
  #   end

  # Example resource route with sub-resources:
  #   resources :products do
  #     resources :comments, :sales
  #     resource :seller
  #   end

  # Example resource route with more complex sub-resources:
  #   resources :products do
  #     resources :comments
  #     resources :sales do
  #       get 'recent', on: :collection
  #     end
  #   end

  # Example resource route with concerns:
  #   concern :toggleable do
  #     post 'toggle'
  #   end
  #   resources :posts, concerns: :toggleable
  #   resources :photos, concerns: :toggleable

  # Example resource route within a namespace:
  #   namespace :admin do
  #     # Directs /admin/products/* to Admin::ProductsController
  #     # (app/controllers/admin/products_controller.rb)
  #     resources :products
  #   end
end

gemfile:

source 'https://rubygems.org'


# Bundle Edge Rails instead: gem 'Rails', github: 'Rails/rails'
gem 'Rails', '4.2.0'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use SCSS for stylesheets
gem 'sass-Rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-Rails', '~> 4.1.0'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :Ruby

gem 'execjs', '~> 2.2.2'

# Use jquery as the JavaScript library
gem 'jquery-Rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/Rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/Rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:Rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc

# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Unicorn as the app server
# gem 'Unicorn'

# Use Capistrano for deployment
# gem 'capistrano-Rails', group: :development

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug'

  # Access an IRB console on exception pages or by using <%= console %> in views
  gem 'web-console', '~> 2.0'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

gemfile.lock datei:

GEM
  remote: https://rubygems.org/
  specs:
    actionmailer (4.2.0)
      actionpack (= 4.2.0)
      actionview (= 4.2.0)
      activejob (= 4.2.0)
      mail (~> 2.5, >= 2.5.4)
      Rails-dom-testing (~> 1.0, >= 1.0.5)
    actionpack (4.2.0)
      actionview (= 4.2.0)
      activesupport (= 4.2.0)
      rack (~> 1.6.0)
      rack-test (~> 0.6.2)
      Rails-dom-testing (~> 1.0, >= 1.0.5)
      Rails-html-sanitizer (~> 1.0, >= 1.0.1)
    actionview (4.2.0)
      activesupport (= 4.2.0)
      builder (~> 3.1)
      erubis (~> 2.7.0)
      Rails-dom-testing (~> 1.0, >= 1.0.5)
      Rails-html-sanitizer (~> 1.0, >= 1.0.1)
    activejob (4.2.0)
      activesupport (= 4.2.0)
      globalid (>= 0.3.0)
    activemodel (4.2.0)
      activesupport (= 4.2.0)
      builder (~> 3.1)
    activerecord (4.2.0)
      activemodel (= 4.2.0)
      activesupport (= 4.2.0)
      arel (~> 6.0)
    activesupport (4.2.0)
      i18n (~> 0.7)
      json (~> 1.7, >= 1.7.7)
      minitest (~> 5.1)
      thread_safe (~> 0.3, >= 0.3.4)
      tzinfo (~> 1.1)
    arel (6.0.0)
    binding_of_caller (0.7.2)
      debug_inspector (>= 0.0.1)
    builder (3.2.2)
    byebug (3.5.1)
      columnize (~> 0.8)
      debugger-linecache (~> 1.2)
      slop (~> 3.6)
    coffee-Rails (4.1.0)
      coffee-script (>= 2.2.0)
      railties (>= 4.0.0, < 5.0)
    coffee-script (2.3.0)
      coffee-script-source
      execjs
    coffee-script-source (1.9.0)
    columnize (0.9.0)
    debug_inspector (0.0.2)
    debugger-linecache (1.2.0)
    erubis (2.7.0)
    execjs (2.2.2)
    globalid (0.3.2)
      activesupport (>= 4.1.0)
    hike (1.2.3)
    i18n (0.7.0)
    jbuilder (2.2.6)
      activesupport (>= 3.0.0, < 5)
      multi_json (~> 1.2)
    jquery-Rails (4.0.3)
      Rails-dom-testing (~> 1.0)
      railties (>= 4.2.0)
      thor (>= 0.14, < 2.0)
    json (1.8.2)
    loofah (2.0.1)
      nokogiri (>= 1.5.9)
    mail (2.6.3)
      mime-types (>= 1.16, < 3)
    mime-types (2.4.3)
    mini_portile (0.6.2)
    minitest (5.5.1)
    multi_json (1.10.1)
    nokogiri (1.6.6.2-x86-mingw32)
      mini_portile (~> 0.6.0)
    rack (1.6.0)
    rack-test (0.6.3)
      rack (>= 1.0)
    Rails (4.2.0)
      actionmailer (= 4.2.0)
      actionpack (= 4.2.0)
      actionview (= 4.2.0)
      activejob (= 4.2.0)
      activemodel (= 4.2.0)
      activerecord (= 4.2.0)
      activesupport (= 4.2.0)
      bundler (>= 1.3.0, < 2.0)
      railties (= 4.2.0)
      sprockets-Rails
    Rails-deprecated_sanitizer (1.0.3)
      activesupport (>= 4.2.0.alpha)
    Rails-dom-testing (1.0.5)
      activesupport (>= 4.2.0.beta, < 5.0)
      nokogiri (~> 1.6.0)
      Rails-deprecated_sanitizer (>= 1.0.1)
    Rails-html-sanitizer (1.0.1)
      loofah (~> 2.0)
    railties (4.2.0)
      actionpack (= 4.2.0)
      activesupport (= 4.2.0)
      rake (>= 0.8.7)
      thor (>= 0.18.1, < 2.0)
    rake (10.4.2)
    rdoc (4.2.0)
      json (~> 1.4)
    sass (3.4.11)
    sass-Rails (5.0.1)
      railties (>= 4.0.0, < 5.0)
      sass (~> 3.1)
      sprockets (>= 2.8, < 4.0)
      sprockets-Rails (>= 2.0, < 4.0)
      tilt (~> 1.1)
    sdoc (0.4.1)
      json (~> 1.7, >= 1.7.7)
      rdoc (~> 4.0)
    slop (3.6.0)
    sprockets (2.12.3)
      hike (~> 1.2)
      multi_json (~> 1.0)
      rack (~> 1.0)
      tilt (~> 1.1, != 1.3.0)
    sprockets-Rails (2.2.4)
      actionpack (>= 3.0)
      activesupport (>= 3.0)
      sprockets (>= 2.8, < 4.0)
    sqlite3 (1.3.10-x86-mingw32)
    thor (0.19.1)
    thread_safe (0.3.4)
    tilt (1.4.1)
    turbolinks (2.5.3)
      coffee-Rails
    tzinfo (1.2.2)
      thread_safe (~> 0.1)
    tzinfo-data (1.2015.1)
      tzinfo (>= 1.0.0)
    uglifier (2.7.0)
      execjs (>= 0.3.0)
      json (>= 1.8.0)
    web-console (2.0.0)
      activemodel (~> 4.0)
      binding_of_caller (>= 0.7.2)
      railties (~> 4.0)
      sprockets-Rails (>= 2.0, < 4.0)

PLATFORMS
  x86-mingw32

DEPENDENCIES
  byebug
  coffee-Rails (~> 4.1.0)
  execjs (~> 2.2.2)
  jbuilder (~> 2.0)
  jquery-Rails
  Rails (= 4.2.0)
  sass-Rails (~> 5.0)
  sdoc (~> 0.4.0)
  sqlite3
  turbolinks
  tzinfo-data
  uglifier (>= 1.3.0)
  web-console (~> 2.0)

datei application.rb:

require File.expand_path('../boot', __FILE__)

require 'Rails/all'

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

module Pinplug
  class Application < Rails::Application
    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded.

    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
    # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
    # config.time_zone = 'Central Time (US & Canada)'

    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
    # config.i18n.default_locale = :de

    # Do not swallow errors in after_commit/after_rollback callbacks.
    config.active_record.raise_in_transactional_callbacks = true
  end
end

Ich habe auch den Turbolinks-Edelstein von 2.3.0 auf 2.2.2 heruntergestuft, da ich der Meinung war, dass die neuere Version des Turbolink-Edelsteins zu Fehlern in meiner App geführt hat. offensichtlich hat das bei mir nicht funktioniert.

Irgendwelche Vorschläge, was mit meiner App schief gehen könnte?

65
AB10

Ändern Sie in Ihren /app/views/layouts/application.html.erb Lines 5 und 6 den ersten Parameter von application in default.

Ich habe das gleiche Problem auch gesehen. Für meine Situation weiß ich nicht warum, aber es geschieht nur unter Windows. Der Parameter application arbeitet auf dem Webserver.

141
FlyC

Wenn Sie Windows ausführen, funktioniert die Kaffeeskriptquelle 1.9.0 nicht unter Windows.

Ändern Sie es in eine vorherige Version, indem Sie diese Zeile in Ihr Gemfile einfügen:

gem 'coffee-script-source', '1.8.0'

Installieren Sie dann das Bundle erneut und passen Sie die Abhängigkeiten für die neue Gem-Version an:

bundle update coffee-script-source
59
evedovelli

Ich habe dieses Problem schon eine Weile und habe alle Antworten in diesem Thread durchgesehen und festgestellt, dass sie alle erfolglos sind. Ich habe beschlossen, meine Lösung in der Hoffnung hinzuzufügen, dass sie zukünftigen Rails Benutzern hilft .

Ich habe alles in diesem Thread getan. Wenn Sie application in default ändern, kann es fehlerfrei durchlaufen werden. Sobald Sie jedoch tatsächlich versuchen, JavaScript zu verwenden, wird ein Fehler angezeigt in der Lage, default.js zu finden. Ich habe NodeJS installiert und in meinem Ruby/bin-Ordner abgelegt. Das hat nichts gebracht, also habe ich es entfernt.

Sie können dieses Problem zwar vorübergehend umgehen, wenn Sie die Lösung "application mit default austauschen" verwenden, aber es ist extrem kurzfristig. Diese Lösung funktioniert möglicherweise für Sie, wenn Sie nicht beabsichtigen, JavaScript über die Asset-Pipeline Rails zu Ihrer App hinzuzufügen. Ich habe dies selbst nicht getestet, aber ich stelle mir vor, dass das Einfügen von JavaScript und Stylesheets in die Header-Datei application.html möglicherweise funktioniert. Aber dann verlierst du die Magie von Rails.

Ich hatte dieses Problem auf Windows 8-, Windows 10- und Ubuntu-Plattformen.

Das einzige, was es für mich löst und das JavaScript und die Stylesheets immer noch rendert, ist, zuerst application in application.css Für die Stylesheets zu ändern (selbst wenn Sie Sass/SCSS verwenden, weil es Kompiliert immer noch in CSS) und application.js für den JavaScript-Link. Sobald dies erledigt ist, gehen Sie in Ihre /assets/javascripts/application.js - Datei und löschen Sie den // Vor //= require turbolinks.

Und jetzt sollte Ihre Anwendung einwandfrei funktionieren.

Dies ist wahrscheinlich ein tieferes Problem mit Turbolinks, aber dies ist eine schnelle Problemumgehung, die mich noch nicht im Stich gelassen hat.

24
MK McKenzie

in windows coffee-script source> = 1.9.0 funktioniert das nicht richtig. einfach in Gemfile einfügen

 gem 'coffee-script-source', '1.8.0'

und Renn

bundle update coffee-script-source
19
Thorin

Installieren Sie einfach NodeJS auf Ihrem lokalen Computer (stellen Sie sicher, dass der entsprechende Eintrag zum PFAD hinzugefügt wird) und fügen Sie ihn hinzu

gem 'execjs'

in das Gemfile .

(unter Windows 8)

  1. Installiere Node.js!
  2. Fügen Sie es dem PFAD hinzu (ENV_VAR)
  3. starten Sie den Server neu
5
adhix11

Hinzufügen von .__ unter Windows 10 Version 1511. gem 'coffee-script-source', '1.8.0' in mein Gemfile und dann Ruby bin\bundle update coffee-script-source Aus dem Projektverzeichnis funktionierte . Hinweis: Die bisherige ersetzte Version der coffee-script-source war 1.10.0

5
Paul Leach

Ich hatte dieses Problem auch ... Ich ging in Sublime in meinen Projektordner. Dann klicken Sie auf die App-Ordner, Ordner anzeigen, Layout, klicken Sie auf application.html.erb und ändern Sie die Zeilen 5 und 6 'application' in 'default'. Hat super gearbeitet. Vielen Dank für Ihr Problem und vielen Dank an die Antwortenden! 

Ich wollte nur hinzufügen, dass ich durch Sublime gegangen bin. Ich lerne gerade und habe nicht verstanden, auf die .erb-Datei zuzugreifen. Ich wollte nur anderen helfen.

3
dmers

Endlich funktionierte es wie ein Seufzer der Erleichterung . Obwohl ich nicht ganz sicher bin, was es funktionierte . Ich habe alles ausprobiert . 1) Installierte node.js, fügte coffescript npm hinzu, und neu gestartet . 2) Gem hinzugefügt für exec.js und modifizierte runtime.rb, so dass es nicht in der Lage ist, die standardmäßige Windows-Skriptdatei ..__ zu verwenden. Weitere Informationen hierzu finden Sie in diesem Link: [ https://github.com/sstephenson/execjs/issues/81([1] 3) Um sicher zu gehen, wurde auch ein Rubyracer-Edelstein gem 'therubyracer' hinzugefügt, Plattformen:: Ruby

Zusammenfassend hinzugefügt zwei Skript-Engines, nodejs und rubyracer und fügte execjs hinzu, so dass sie die beste Skript-Engine auswählt, aber nicht in der Lage ist, die Windows-Skript-Engine auszuwählen.

Ich denke, die Installation von nodejs alleine hat nach dem Hinzufügen von execjs vielleicht funktioniert. Ich habe jedoch nicht neu gestartet (post nodejs Installation) und habe alle anderen Dinge ausprobiert.

1
Rpant

Ich habe alle oben genannten Lösungen ausprobiert, und die einzige, die einwandfrei funktionierte, war die Installation von node.js, das Hinzufügen des Verzeichnisses zur Umgebungsvariable "path" in Windows (unter Erweiterte Systemeinstellungen, Umgebungsvariablen, path) und anschließend das Starten von Computer und Server ... Ich denke, die neueren Versionen von coffee-script-source müssen neben anderen Edelsteinen auch von node.js abhängen. Ich hatte den identischen Fehler, ohne Kaffee-Skript-Quelle zu verwenden. 

Das Ändern von "application" in "default" ist jedoch eine schreckliche Lösung, da dadurch lediglich das gesamte CSS-Format der Anwendung entfernt wird. Ich empfehle es überhaupt nicht.

1
Graeme Campbell

Ich habe gerade die 'application' in den Zeilen 5 und 6 in 'default' geändert und das Problem gelöst ./app/views/layouts/application.html.erb.

VON:

<%= stylesheet_link_tag    '**application**', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag '**application**', 'data-turbolinks-track' => true %>

ZU:

<%= stylesheet_link_tag    '**default**', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag '**default**', 'data-turbolinks-track' => true %>
1
Carlos Amorim

(Unter Windows 10 - Rails 4.2.5): Ich habe dies folgendermaßen gelöst:

1) Installiere node.js 

2) Installieren Sie das coffe-script-source gem

gem 'coffee-script-source', '1.8.0'

3) Fügen Sie diese Zeile in "config\initializers\assets.rb" ein.

Rails.application.config.assets.precompile + =% w (application.css)
0
Isa Souza

wir sollten Zeile 6 nur von application in default in /app/views/layouts/application.html.erb ändern. Wenn Sie Zeile 5 ändern, werden Stylesheets nicht geladen.

0
BENS

Für Windows-Benutzer Sie können execjs Laufzeitpfad zum Knoten einrichten

config/boot.rb

ENV['EXECJS_RUNTIME'] = 'Node'
0
riguang zheng

Sie müssen die Anweisungen auf der Rails-Seite lesen. Sie benötigen ExecJS gem und einige JS-Laufzeit.

Praktischer: 1. Installieren Sie einige Runtime-JS, zum Beispiel node.js

2.- Holen Sie sich ExecJS gem-> gem install execjs

Erklärung:

Von der Rails-Seite:

"Die Kompilierung von CoffeeScript- und JavaScript-Asset-Komprimierung erfordert, dass auf Ihrem System eine JavaScript-Laufzeitumgebung vorhanden ist. Wenn keine Laufzeitumgebung vorhanden ist, wird während der Asset-Kompilierung ein execjs-Fehler angezeigt. Mac OS X und Windows werden standardmäßig mit einer JavaScript-Laufzeitumgebung installiert therubyracer gem zum generierten Gemfile in einer kommentierten Zeile für neue Apps und Sie können das Kommentarfeld bei Bedarf entkommentieren. therubyrhino ist die empfohlene Laufzeit für JRuby-Benutzer und wird standardmäßig in den Gemfile in in JRuby generierten Apps hinzugefügt Laufzeiten bei ExecJS. "

Aus dem GitHub von ExecJS:

"Mit ExecJS können Sie JavaScript-Code von Ruby aus ausführen. Es wählt automatisch die beste verfügbare Laufzeit zum Auswerten Ihres JavaScript-Programms aus und gibt Ihnen das Ergebnis als Ruby-Objekt zurück.

ExecJS unterstützt diese Laufzeiten:

therubyracer - Google V8 embedded within Ruby
therubyrhino - Mozilla Rhino embedded within JRuby
Duktape.rb - Duktape JavaScript interpreter
Node.js
Apple JavaScriptCore - Included with Mac OS X
Microsoft Windows Script Host (JScript)
Google V8
mini_racer - Google V8 embedded within Ruby" 

ExecJS Readme GitHub

0
Mauro

Ich bin auf Rails 5.1.6. Ich hatte das gleiche Problem. Wie oben empfohlen, habe ich den Kaffee-Skript-Quelledelstein abgebaut, der das Problem gelöst hat.

# Use CoffeeScript for .coffee assets and views
gem 'coffee-Rails', '~> 4.2' # <-- This existed already
gem 'coffee-script-source', '1.8.0' # <-- Adding this line solved the problem

Hinweis: Ich habe die Datei application.html.rb nicht geändert

0
Kaz

Unter Windows 10 

Installieren Sie einfach node.js und stellen Sie sicher, dass die ausführbare Datei des Knotens die Pfadvariable enthält.

0
Rafaf Tahsin

Sein Problem mit Turbolinks ist also ein Fehler 

Ändern Sie dies in app\views\layouts\application.html.erb

<%= stylesheet_link_tag    'application.css', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application.js', 'data-turbolinks-track': 'reload' %>

von 

<%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

und kommentieren Sie die Zeile Nr. 15 in app\assets\javascripts\application.js aus 

require turbolinks

und kopieren Sie es am Ende der Datei in app\assets\stylesheets\application.css

Von diesem werden Ihre CSS und Js ausgeführt

0
Arpit bandil