web-dev-qa-db-ja.com

Rails Pages#homeのExecJS :: ProgramError?

新しいアプリを起動して、コントローラーページホームを作成し、ローカルのHost:3000/pages/homeに移動しようとすると、次のエラーが表示されます。

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)

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>

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

pages_controller.rbファイル:

class PagesController < ApplicationController
  def home
  end
end

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ファイル:

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)

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

また、ターボリンクのgemを2.3.0から2.2.2にダウングレードし、ターボリンクのgemの新しいバージョンがアプリにエラーを引き起こしていると考えました。明らかにそれは私にはうまくいきませんでした。

私のアプリで何がうまくいかないかについての提案はありますか?

67
AB10

/ app/views/layouts/application.html.erb5および6で、最初のパラメーターをapplicationからdefaultに変更します。

私も同じ問題に直面しました。私の状況では、理由はわかりませんが、Windowsでのみ発生します。パラメーターapplicationは、Webサーバーで機能します。

141
FlyC

Windowsで実行している場合、coffee-script-source 1.9.0は​​Windowsでは機能しません。

この行をGemfileに追加する前のバージョンに変更します。

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

次に、新しいGemバージョンの依存関係を調整するバンドルを再インストールします。

bundle update coffee-script-source
59
evedovelli

私はしばらくの間この問題を抱えていて、このスレッドのすべての答えを調べてすべて失敗したことがわかったので、将来のRailsユーザーに役立つことを期待してソリューションを追加することにしました。

私はこのスレッドですべてを実行しました-applicationdefaultに変更するとエラーなしで通過できますが、実際にJavaScriptを使用しようとすると、できないことに関するエラーが表示されますdefault.jsを見つけます。 NodeJSをインストールし、Ruby/binフォルダーに配置しました。それは何もしなかったので、削除しました。

確かに一時的にapplicationdefaultに切り替える」ソリューションでこの問題を回避できますが、それは非常に短い期間です。このソリューションは、Railsアセットパイプラインを通じてアプリにJavaScriptをスタイリングしたり追加したりする意図がない場合に有効です。私はこれを自分でテストしていませんが、application.htmlヘッダーファイルにJavaScriptとスタイルシートを含めることはうまくいくと思います。しかし、それからRailsの魔法を失います。

この問題は、Windows 8、Windows 10、およびUbuntuプラットフォームで発生しました。

私にとってそれを解決し、JavaScriptとスタイルシートをレンダリングする唯一のことは、最初にスタイルシートのapplicationapplication.cssに変更することです(Sass/SCSSを使用している場合でも、コンパイルしますJavaScriptリンクの場合はcss)およびapplication.jsに移動します。それが完了したら、/assets/javascripts/application.jsファイルに移動し、//の前にある//= require turbolinksを削除します。

これで、アプリケーションは正常に動作するはずです。

これはおそらくターボリンクのより深い問題ですが、これはまだ私を失望させていない簡単な回避策です。

24
MK McKenzie

windowsのcoffee-scriptソース> = 1.9.0では正しく動作しません。 Gemfileを追加するだけです

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

そして走る

bundle update coffee-script-source
19
Thorin

ローカルマシンにNodeJSをインストールし(対応するエントリがPATHに追加されていることを確認してください)、追加するだけです

gem 'execjs'

Gemfileへ。

(Windows 8)

  1. Node.jsをインストールしてください!
  2. PATH(ENV_VAR)に追加します
  3. サーバーを再起動します
5
adhix11

Windows 10バージョン1511で、gem 'coffee-script-source'、 '1.8.0'をgemfileに追加してから、プロジェクトディレクトリからRuby bin\bundle update coffee-script-sourceを追加しました。 NB:置き換えられた以前のcoffee-script-sourceバージョンは1.10.0でした

5
Paul Leach

私もこの問題を抱えていました。 Sublimeに入ってプロジェクトフォルダーに入りました。次に、アプリフォルダー、ビューフォルダー、レイアウトをクリックし、application.html.erbをクリックして、5行目と6行目の「アプリケーション」を「デフォルト」に変更しました。うまくいきました。あなたの問題を投稿してくれてありがとう、そして答えた人に感謝します!

私はSublimeを介して行っただけで追加したかった。私は学んでいるだけで、.erbファイルにアクセスする方法がわかりませんでした。他の人を助けたかっただけです。

3
dmers

ようやく機能するようになりました。なぜそれが機能したのか正確にはわかりませんが。次のすべてを試しました。 1)node.jsをインストールし、それにcoffescript npmを追加して再起動しました。 2)exec.jsにgemを追加し、runtime.rbを変更して、デフォルトのWindowsスクリプトファイルを使用できないようにしました。これを行う方法については、このリンクを参照してください:[ https://github.com/sstephenson/execjs/issues/81] [1] 3)安全のために、rubyracer gem gem 'therubyracerも追加'、プラットフォーム::Ruby

要約すると、2つのスクリプトエンジン、nodejsおよびrubyracerが追加され、execjsが追加されたため、最適なスクリプトエンジンが選択されますが、windows scrptingエンジンは選択できません。

Execjsを追加した後は、nodejsを単独でインストールするだけでうまくいくと思います。ただし、再起動せず(nodejsのインストール後)、他のすべてを試しました。

1
Rpant

上記のすべてのソリューションを試してみましたが、正常に機能したのは、node.jsをインストールし、Windowsの「パス」環境変数にディレクトリを追加して(システムの詳細設定、環境変数、パスにあります)、再起動することだけでしたコンピューターとサーバー。 coffee-script-sourceの以降のバージョンは、他のgemと一緒にnode.jsに依存する必要があると思います。 coffee-script-sourceを使用せずに同じエラーが発生しました。

ただし、「アプリケーション」を「デフォルト」に変更すると、アプリケーションのCSSスタイルがすべて削除されるため、ひどい解決策になります。まったくお勧めしません。

1
Graeme Campbell

5行目と6行目の 'application'を 'default'に変更し、解決しました。 /app/views/layouts/application.html.erb

から:

<%= 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
Carlos Amorim

私はRails 5.1.6にいます。同じ問題がありました。上記で推奨したように、問題を解決したcoffee-script-source gemを劣化させました。

# 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

注:application.html.rbファイルは変更しませんでした

1
Kaz

(Windows 10-Rails 4.2.5):これを行うことで解決しました:

1)インストールnodes.js

2)coffe-script-sourcegemをインストールします

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

3)「config\initializers\assets.rb」にこの行を追加します

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

/app/views/layouts/application.html.erbの6行目のみをapplicationからdefaultに変更する必要があります。行5を変更すると、スタイルシートが読み込まれなくなります。

0
BENS

Windowsユーザーの場合 Nodeへのexecjsランタイムパスを設定できます

config/boot.rb

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

Railsページの指示を読む必要があります。 ExecJS gemとJSランタイムが必要です。

より実用的:1.-いくつかのランタイムJS、例えばnode.jsをインストールします

2.- ExecJS gemを取得-> gem install execjs

説明:

Railsページから:

「CoffeeScriptおよびJavaScriptアセット圧縮をコンパイルするには、システムでJavaScriptランタイムを使用できる必要があります。ランタイムがない場合、アセットのコンパイル中にexecjsエラーが表示されます。通常、Mac OS XおよびWindowsにはJavaScriptランタイムがインストールされています。Railsは、生成されたGemfileに新しいアプリのコメント行にtherubyracer gemを追加します。必要に応じてコメントを外すことができます。 ExecJSでサポートされているすべてのランタイムを調査できます。」

ExecJSのgitHubから:

「ExecJSを使用すると、JavaScriptコードをRubyから実行できます。JavaScriptプログラムを評価するために利用可能な最適なランタイムを自動的に選択し、Rubyオブジェクトとして結果を返します。

ExecJSは次のランタイムをサポートしています。

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

オンWindows 10

node.js をインストールして、ノードの実行可能ファイルがパス変数にあることを確認してください。

0
Rafaf Tahsin

Turbolinks gemの問題なので、作成エラー

したがって、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' %>

から

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

app\assets\javascripts\application.jsの行番号15のコメントを外します

require turbolinks

ファイルの最後にあるapp\assets\stylesheets\application.cssにコピーします

これから、CSSとJSが実行されます

0
Arpit bandil