Rails ExecJS:: ProgramError in Pages#home?

démarrer une nouvelle application, quand je crée une page de controller home et que j'essaie d'aller sur le host local: 3000 / pages / home, j'obtiens l'erreur suivante:

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)

de l'application.HTML.dossier 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>

application_controller.dossier 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

pages_controller.dossier rb:

class PagesController < ApplicationController
  def home
  end
end

itinéraires.dossier 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.fichier de verrouillage:

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)

de l'application.dossier 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

j'ai également déclassé le turbolinks gem de 2.3.0 à 2.2.2, en pensant que la nouvelle version du turbolinks gem était à l'origine de mon application pour avoir des erreurs; évidemment que cela n'a pas fonctionné pour moi.

des suggestions sur ce qui pourrait aller mal avec mon application?

63
demandé sur AB10 2015-02-10 02:35:56

16 réponses

Dans votre /app/views/layouts/de l'application.HTML.erb les lignes 5 et 6 changent le premier paramètre de application en default .

j'ai rencontré le même problème, trop pour ma situation, Je ne sais pas pourquoi, mais ça n'arrive qu'aux fenêtres. Le paramètre application fonctionne sur le serveur web.

141
répondu FlyC 2016-05-08 02:39:25

si vous utilisez WIndows, Le coffee-script-source 1.9.0 ne fonctionne pas sur windows.

changez pour une version précédente en ajoutant cette ligne à votre fichier Gemfile:

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

et ensuite réinstaller le bundle en ajustant les dépendances pour la nouvelle version de Gem avec:

bundle update coffee-script-source
58
répondu evedovelli 2015-05-26 14:02:44

j'ai eu ce problème pendant un certain temps et après avoir parcouru toutes les réponses dans ce fil, et les trouva tous infructueux, j'ai décidé d'ajouter ma solution dans l'espoir qu'il aide les futurs Rails utilisateurs.

j'ai tout fait dans ce thread - changer application en default lui permet de passer sans erreur, mais une fois que vous essayez réellement d'utiliser N'importe quel JavaScript, une erreur est affichée concernant ne pas être en mesure de trouver default.js . J'ai installé NodeJS et je l'ai mis dans mon dossier Ruby/bin. Ça n'a rien fait, alors je l'ai enlevé.

vous pouvez en effet Temporairement contourner ce problème avec le "switching out application avec default " solution, mais il est extrêmement à court terme. Cette solution peut fonctionner pour vous si vous n'avez pas l'intention de concevoir ou d'ajouter JavaScript à votre application par le biais du pipeline de ressources de Rails. Je ne l'ai pas testé moi-même, mais j'imagine inclure JavaScript et les feuilles de style dans l'application.le fichier d'en-tête html peut fonctionner. Mais ensuite vous perdez la magie des Rails.

j'ai eu ce problème sur Windows 8, Windows 10, et les plateformes Ubuntu.

la seule chose qui le résout, pour moi, et rend encore le JavaScript et les feuilles de style est de changer d'abord application en application.css pour les feuilles de style (même si vous utilisez Sass/SCSS, parce qu'il compile toujours en css) et application.js pour le JavaScript lien. Une fois que c'est fait, allez dans votre fichier /assets/javascripts/application.js et supprimez le // devant //= require turbolinks .

Et maintenant, votre application devrait fonctionner parfaitement.

c'est probablement un problème plus profond avec les turbolinks, mais c'est une solution rapide qui ne m'a pas encore déçu.

23
répondu MK McKenzie 2016-03-13 02:23:01

dans Windows coffee-script source >= 1.9.0 ne fonctionne pas correctement. il suffit d'ajouter dans Gemfile

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

et courir

bundle update coffee-script-source
19
répondu Thorin 2016-04-26 16:36:01

installez simplement NodeJS sur votre machine locale (assurez-vous que l'entrée correspondante est ajoutée au chemin) et ajoutez

gem 'execjs'

dans le Gemfile .

6
répondu Ilya Bodrov-Krukowski 2015-02-18 11:14:32

sur windows 10 version 1511, en ajoutant gem 'coffee-script-source', '1.8.0' pour ma gemfile et ruby bin\bundle mise à jour de coffee-script-source du répertoire de projet a fonctionné. NB: la version précédente de coffee-script-source qui a été remplacée était 1.10.0

5
répondu Paul Leach 2016-03-03 02:14:48

(Sur Windows 8)

  1. Nœud D'Installation.js!
  2. Add it to the PATH (ENV_VAR)""
  3. redémarrer le serveur
4
répondu adhix11 2016-03-07 08:27:37

j'ai eu ce problème aussi. Je suis entré dans Sublime dans mon dossier de projet. Puis cliqué les dossiers de l'application, dossier de vue, layout, application cliqué.HTML.erb et modifié les lignes 5 et 6 de l '"application" à "par défaut". A très bien fonctionné. Merci de poster votre problème et merci à ceux qui ont répondu!

je voulais juste ajouter que je suis entré par Sublime. Je suis tout à apprendre et je ne comprenais pas comment accéder à l' .dossier erb. Je voulais juste aider les autres.

3
répondu dmers 2015-02-17 16:23:50

je viens de changer le" application " en " default " sur les lignes 5 et 6, et résolu. /app/views/layouts/application.html.erb .

de:

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

à:

<%= stylesheet_link_tag    '**default**', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag '**default**', 'data-turbolinks-track' => true %>
1
répondu Carlos Amorim 2015-12-03 16:39:34

a finalement réussi à le faire marcher comme un soupir de soulagement. Même si Je ne suis pas sûr de ce qui l'a fait fonctionner. Essayé toutes les suivantes. 1) noeud installé.js , a ajouté coffescript mnp, et redémarré. 2) gem ajouté pour exec.JS et runtime modifié.rb afin qu'il ne soit pas en mesure d'utiliser le fichier script windows par défaut. Reportez-vous à ce lien sur la façon de le faire: [ https://github.com/sstephenson/execjs/issues/81] [1] 3) pour être sûr, a également ajouté rubyracer gem gem "therubyracer", plates-formes:: ruby

en résumé a ajouté deux moteurs de script, nodejs et rubyracer et a ajouté execjs de sorte qu'il choisit le meilleur moteur de script , mais n'est pas en mesure de choisir windows scrpting moteur.

je suppose que juste installer nodejs seul aurait pu fonctionner après avoir ajouté des execjs. Cependant je n'ai pas redémarré(post NodeJS installation) et essayé toutes les autres choses.

1
répondu Rpant 2016-04-17 06:31:01

nous ne devrions changer la ligne 6 que de application à default dans /app/views/layouts/application.HTML.Erb. le changement de la ligne 5 aura pour résultat que les feuilles de style ne seront pas chargées.

0
répondu BENS 2015-10-03 17:05:15

vous devez lire les instructions dans la page rails. Vous avez besoin D'ExecJS gem et de JS runtime.

plus pratique: 1.- Installez quelques js D'exécution, par exemple node.js

2.- get ExecJS gem - > gem install execjs

Explication:

dans le cas des rails page:

" compiler CoffeeScript et la compression D'actifs JavaScript nécessite que vous ayez une exécution JavaScript disponible sur votre système, en l'absence d'une exécution, vous verrez une erreur execjs lors de la compilation des ressources. Habituellement Mac OS X et Windows sont fournis avec un JavaScript runtime installé. Les Rails ajoutent la gemme therubyracer à la Gemfile générée dans une ligne commentée pour les nouvelles applications et vous pouvez décommenter si vous en avez besoin. therubyrhino est la durée d'exécution recommandée pour les utilisateurs de JRuby et est ajouté par défaut au fichier Gemfile dans les applications générées sous JRuby. Vous pouvez enquêter sur tous les temps d'exécution pris en charge par ExecJS."

De hte gitHub de ExecJS:

" ExecJS vous permet d'exécuter du code JavaScript à partir de Ruby. Il sélectionne automatiquement le meilleur runtime disponible pour évaluer votre programme JavaScript, puis vous renvoie le résultat sous forme D'objet Ruby.

ExecJS supporte ces runtimes:

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
répondu Mauro 2016-12-02 18:22:37

j'ai essayé toutes les solutions ci-dessus, et la seule qui a fonctionné correctement installation de nœud.js, ajoute le répertoire à la variable d'environnement' path ' de windows (trouvée dans les paramètres système avancés, Variables D'environnement, path) et redémarre l'ordinateur et le serveur. Je pense que les versions ultérieures de coffee-script-source doivent dépendre de node.js, le long de avec d'autres pierres précieuses. J'ai eu la même erreur sans utiliser coffee-script-source.

modification de l '"application" à "par défaut" est une terrible solution, car il supprime juste l'ensemble de l'application est le style css. Je ne le recommande pas du tout.

0
répondu Graeme Campbell 2017-01-27 15:12:00

son problème avec turbolinks gem donc son erreur de création

ainsi dans app\views\layouts\application.HTML.erb changer cette

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

de

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

et décommentez la ligne no.15 dans l'app\assets\javascripts\application.js

require turbolinks

et le copier dans app\assets\css\application.css à la fin du fichier

A partir de là, votre css et js seront lancés

0
répondu arpit bandil 2017-02-02 13:38:46

je suis sur les Rails 5.1.6. J'ai eu le même problème. Comme recommandé ci-dessus j'ai dégradé le coffee-script-source gem qui a résolu le problème.

# 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

Note: je n'ai pas modifié l'application.HTML.dossier rb

0
répondu Kaz 2018-06-23 15:28:32

Sur Windows 10

il suffit d'installer noeud.js et assurez-vous que l'exécutable de noeud est dans la variable de chemin.

0
répondu Rafaf Tahsin 2018-08-02 06:50:29