Rails ExecJS :: ProgramError in Pages # home?

Avvio di una nuova app, quando creo una home page del controller e provo ad andare all’host locale: 3000 / pages / home, ottengo il seguente errore:

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) 

file application.html.erb:

    Pinplug  true %>  true %>       

file 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 

file pages_controller.rb:

 class PagesController < ApplicationController def home end end 

routes.rb file:

     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  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] 

    file gemfile.lock:

     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, = 4.1.0) hike (1.2.3) i18n (0.7.0) jbuilder (2.2.6) activesupport (>= 3.0.0,  1.2) jquery-rails (4.0.3) rails-dom-testing (~> 1.0) railties (>= 4.2.0) thor (>= 0.14, = 1.5.9) mail (2.6.3) mime-types (>= 1.16,  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, = 4.2.0.alpha) rails-dom-testing (1.0.5) activesupport (>= 4.2.0.beta,  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,  1.4) sass (3.4.11) sass-rails (5.0.1) railties (>= 4.0.0,  3.1) sprockets (>= 2.8, = 2.0,  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,  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.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) 

    file 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 

    Ho anche effettuato il downgrade della gem dei turbolinks dalla 2.3.0 alla 2.2.2, pensando che la versione più recente della gem dei turbolinks stava causando errori nella mia app; ovviamente questo non ha funzionato per me

    Qualche suggerimento su cosa potrebbe andare storto con la mia app?

    Nelle tue /app/views/layouts/application.html.erb righe 5 e 6 , modifica il primo parametro application default .

    Ho incontrato lo stesso problema anche per la mia situazione, non so perché, ma succede solo su Windows. L’ application parametri funziona sul server web.

    Se stai usando Windows, il caffè-script-source 1.9.0 non funziona su Windows.

    Passa a una versione precedente aggiungendo questa linea al tuo Gemfile:

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

    E quindi reinstallare il pacchetto regolando le dipendenze per la nuova versione Gem con:

     bundle update coffee-script-source 

    Ho avuto questo problema per un po ‘e dopo aver esaminato tutte le risposte in questo thread e ho riscontrato che tutti non hanno avuto successo, ho deciso di aggiungere la mia soluzione nella speranza che possa aiutare i futuri utenti di Rails.

    Ho fatto tutto in questo thread – la modifica application default consente di passare senza errori, ma una volta che si tenta effettivamente di utilizzare qualsiasi JavaScript, viene visualizzato un errore per non essere in grado di trovare default.js . Ho installato NodeJS e l’ho inserito nella mia cartella Ruby / bin. Questo non ha fatto nulla, quindi l’ho rimosso.

    In effetti, è ansible aggirare temporaneamente questo problema con la soluzione di “cambio di application con default “, ma è estremamente breve. Questa soluzione potrebbe funzionare per te se non hai intenzione di creare o aggiungere JavaScript alla tua app attraverso la pipeline di asset di Rails. Non l’ho mai provato, ma immagino che includere JavaScript e fogli di stile nel file di intestazione application.html possano funzionare. Ma poi perdi la magia di Rails.

    Ho avuto questo problema su piattaforms Windows 8, Windows 10 e Ubuntu.

    L’unica cosa che lo risolve, per me, e rende ancora JavaScript e i fogli di stile è di cambiare prima l’ application in application.css per i fogli di stile (anche se stai usando Sass / SCSS, perché continua a compilarlo in css) e l’ application.js per il collegamento JavaScript. Fatto ciò, vai nel tuo file /assets/javascripts/application.js ed elimina // di fronte a //= require turbolinks .

    E ora la tua applicazione dovrebbe funzionare bene.

    Questo è probabilmente un problema più profondo con i turbolinks, ma questa è una soluzione rapida che non mi ha ancora deluso.

    in windows coffee-script source> = 1.9.0 non funziona correttamente. aggiungi semplicemente Gemfile

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

    e corri

     bundle update coffee-script-source 

    Installa NodeJS sul tuo computer locale (assicurati che la voce corrispondente venga aggiunta al PERCORSO) e aggiungi

     gem 'execjs' 

    nel Gemfile .

    Su Windows 10 versione 1511, aggiungendo gem ‘coffee-script-source’, ‘1.8.0’ al mio gemfile e poi ruby ​​bin \ bundle update coffee-script-source dalla directory del progetto funzionava. NB: la versione precedente di coffee-script-source che è stata sostituita era 1.10.0

    (Su Windows 8)

    1. Installa Node.js!
    2. Aggiungilo al PERCORSO (ENV_VAR)
    3. riavviare il server

    Ho avuto anche questo problema. Sono entrato in Sublime nella cartella del mio progetto. Quindi ha fatto clic sulle cartelle dell’app, visualizza la cartella, il layout, ha fatto clic su application.html.erb e ha modificato le righe 5 e 6 “application” su “default”. Ha funzionato alla grande Grazie per aver postato il tuo problema e grazie a quelli che hanno risposto!

    Volevo solo aggiungere che sono entrato in Sublime. Sto solo imparando e non ho capito come accedere al file .erb. Volevo solo aiutare gli altri.

    Ho appena cambiato l” application ‘ in ‘ default ‘ sulle linee 5 e 6 e risolto. /app/views/layouts/application.html.erb .

    A PARTIRE DAL:

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

    A:

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

    Finalmente ha funzionato come un sospiro di sollievo. Anche se non sono esattamente sicuro di cosa abbia funzionato. Ho provato tutto ciò che segue. 1) Installato node.js, aggiunto coffescript npm ad esso, e riavviato. 2) Aggiunto gem per exec.js e modificato runtime.rb in modo che non sia in grado di utilizzare il file di script di Windows predefinito. Fare riferimento a questo link su come fare questo: [ https://github.com/sstephenson/execjs/issues/81%5D%5B1%5D 3) Per essere sicuri, aggiunto anche rubyracer gem gem ‘therubyracer’, piattaforms:: ruby

    In breve, sono stati aggiunti due motori di scripting, nodejs e rubyracer e sono stati aggiunti execjs in modo che scelga il miglior motore di scripting, ma non è in grado di scegliere il motore di windows scrpting.

    Suppongo che l’installazione di nodej da sola possa aver funzionato dopo aver aggiunto execjs. Tuttavia non ho riavviato (installazione post nodejs) e provato tutte le altre cose.

    dovremmo solo cambiare la riga 6 application al default in /app/views/layouts/application.html.erb. cambiando la linea 5 i fogli di stile non verranno caricati.

    Hai bisogno di leggere le istruzioni nella pagina dei binari. Hai bisogno di ExecJS gem e qualche runtime JS.

    Più pratico: 1.- Installare alcuni Runtime JS, ad esempio node.js

    2.- get ExecJS gem-> gem installa execjs

    Spiegazione:

    Dalla pagina dei binari:

    “Compilare CoffeeScript e la compressione delle risorse JavaScript richiede che sul tuo sistema sia disponibile un runtime JavaScript, in assenza di un runtime si vedrà un errore execjs durante la compilazione degli asset, di solito Mac OS X e Windows sono dotati di un runtime JavaScript installato. Il gioiello di therubyracer al Gemfile generato in una riga commentata per nuove app e puoi decommentare se ne hai bisogno. therubyrhino è il runtime consigliato per gli utenti JRuby e viene aggiunto per impostazione predefinita al Gemfile nelle app generate sotto JRuby. runtimes a ExecJS. ”

    Da hte gitHub di ExecJS:

    “ExecJS ti consente di eseguire codice JavaScript da Ruby. Seleziona automaticamente il miglior runtime disponibile per valutare il tuo programma JavaScript, quindi restituisce il risultato come object Ruby.

    ExecJS supporta questi runtime:

     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 Leggimi GitHub

    Ho provato tutte le soluzioni di cui sopra e l’unico che ha funzionato correttamente è stato installare node.js, aggiungere la directory alla variabile di ambiente ‘percorso’ in windows (che si trova in Impostazioni di sistema avanzate, Variabili di ambiente, percorso) e quindi riavviare il computer e server. Penso che le versioni successive di coffee-script-source debbano dipendere da node.js, insieme ad altre gemme. Ho avuto lo stesso errore senza usare coffee-script-source.

    Cambiare l”applicazione’ in ‘default’ è una soluzione terribile, perché rimuove solo tutti gli stili css dell’applicazione. Non lo consiglio affatto.

    Il suo problema con la gem dei turbolinks è il suo errore di creazione

    Quindi in app \ views \ layouts \ application.html.erb cambia questo

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

    a partire dal

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

    e decommentare la riga n. 15 in app \ assets \ javascripts \ application.js

     require turbolinks 

    e copiarlo in app \ assets \ stylesheets \ application.css alla fine del file

    Da questo verranno eseguiti i tuoi css e js

    Sono su Rails 5.1.6. Ho avuto lo stesso problema. Come consigliato sopra, ho degradato la gem del caffè-script-source che ha risolto il problema.

     # 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 

    Nota: non ho modificato il file application.html.rb

    Su Windwos 10

    Installa semplicemente node.js e assicurati che il file eseguibile del nodo si trovi nella variabile percorso.