Rails ExecJS:: ProgramError на страницах#home?
запуск нового приложения, когда я создаю страницу контроллера home и пытаюсь перейти на локальный хост: 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)
приложение.формат 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
маршруты.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.блокировка файла:
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)
приложение.рубидий файл:
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
Я также понизил Turbolinks gem с 2.3.0 до 2.2.2, думая, что более новая версия turbolinks gem вызывала ошибки в моем приложении; очевидно, что это не сработало для меня.
любые предложения о том, что может быть не так с моим приложением?
16 ответов:
в своем / app / views/layouts / application.формат html.Эрб линии 5 и 6 измените первый параметр из
application
доdefault
.Я тоже столкнулся с той же проблемой для моей ситуации, я не знаю, почему, но это происходит только на Windows. Параметр
application
работает на веб-сервере.
Если вы работаете в WIndows, coffee-script-source 1.9.0 не работает в windows.
измените его на предыдущую версию, добавив эту строку в свой Gemfile:
gem 'coffee-script-source', '1.8.0'
а затем переустановите пакет, настроив зависимости для новой версии Gem с помощью:
bundle update coffee-script-source
у меня была эта проблема некоторое время, и, пройдя через все ответы в этой теме и обнаружив, что все они неудачны, я решил добавить свое решение в надежде, что оно поможет будущим пользователям Rails.
Я сделал все в этом потоке-изменение
application
доdefault
позволяет ему пройти без ошибок, но затем, как только вы на самом деле пытаетесь использовать любой JavaScript, отображается ошибка, связанная с невозможностью найтиdefault.js
. Я установил NodeJS и поставил это в моей папке Ruby/bin. Это ничего не сделало, поэтому я удалил его.вы можете временно обойти эту проблему с помощью "переключения
application
сdefault
" решение, но это очень короткий срок. Это решение может работать для вас, если у вас нет намерения стилизовать или добавить JavaScript в ваше приложение через конвейер ресурсов Rails. Я не проверял это сам, но я представляю себе, включая JavaScript и таблицы стилей в приложении.заголовочный файл HTML может работа. Но тогда вы теряете магию рельсов.у меня была эта проблема на платформах Windows 8, Windows 10 и Ubuntu.
единственное, что решает это, для меня, и все еще делает JavaScript и таблицы стилей, чтобы сначала изменить
application
доapplication.css
для таблиц стилей (даже если вы используете Sass/SCSS, потому что он все еще компилируется в css) иapplication.js
для ссылки JavaScript. Как только это будет сделано, зайдите в/assets/javascripts/application.js
файл и удалить//
перед//= require turbolinks
.и теперь ваше приложение должно работать просто отлично.
это, вероятно, более глубокая проблема с turbolinks, но это быстрый обходной путь, который еще не подвел меня.
в windows coffee-script source >= 1.9.0 не работает должным образом. просто добавьте в файле
gem 'coffee-script-source', '1.8.0'
и работать
bundle update coffee-script-source
просто установите NodeJS на локальном компьютере (убедитесь, что соответствующая запись добавлена в путь) и добавьте
gem 'execjs'
на Gemfile.
в windows 10 версии 1511, добавление gem 'coffee-script-source', '1.8.0' в мой gemfile, а затем ruby bin\bundle update coffee-скрипт-источник из директории проекта работал. NB: предыдущая версия coffee-script-source, которая была заменена, была 1.10.0
У меня тоже эта проблема. Я пошел на возвышенное в моей папке проекта. Затем щелкните папки приложения, просмотреть папку, макет, щелкните приложение.формат html.erb и изменил строки 5 и 6 "приложение" на "по умолчанию". Работал отлично. Спасибо за размещение вашей проблемы и спасибо тем, кто ответил!
Я просто хотел добавить, что я прошел через Sublime. Я просто учусь, и я не понимаю, как получить доступ .erb файл. Просто хотел помочь другим.
Я только что изменил '
application
'to'default
' на строках 5 и 6, и решен./app/views/layouts/application.html.erb
.от:
<%= stylesheet_link_tag '**application**', media: 'all', 'data-turbolinks-track' => true %> <%= javascript_include_tag '**application**', 'data-turbolinks-track' => true %>
TO:
<%= stylesheet_link_tag '**default**', media: 'all', 'data-turbolinks-track' => true %> <%= javascript_include_tag '**default**', 'data-turbolinks-track' => true %>
наконец - то получилось, что вздох облегчения. Хотя я не совсем уверен, что заставило его работать. Пробовал все следующее. 1) установлен узел.js, добавил к нему CoffeScript npm и перезапустил. 2) Добавлен драгоценный камень для exec.js и измененная среда выполнения.rb, чтобы он не мог использовать файл сценария windows по умолчанию. См. эту ссылку о том, как это сделать: [https://github.com/sstephenson/execjs/issues/81][1] 3) чтобы быть в безопасности, также добавлен rubyracer gem драгоценный камень 'therubyracer', платформы: : Руби
в итоге добавлены два скриптовых движка, nodejs и rubyracer и добавлены execjs, так что он выбирает лучший скриптовый движок , но не может выбрать Windows scrpting engine.
Я думаю, что просто установка nodejs в одиночку, возможно, сработала после добавления execjs. Однако я не перезапустил (после установки nodejs) и попробовал все остальные вещи.
мы должны изменить только строку 6 от
application
доdefault
in/app/views/layouts / application.формат html.Эрб. изменение строки 5 приведет к тому, что таблицы стилей не будут загружаться.
вам нужно прочитать инструкцию на странице rails. Вам нужно ExecJS драгоценных камней и некоторых JavaScript во время выполнения.
более практичным: 1.- Установите некоторые JS во время выполнения, например узел.js
2.- get ExecJS gem - > gem install execjs
экспликации:
со страницы rails:
" компиляция CoffeeScript и JavaScript asset compression требует наличия среды выполнения JavaScript, доступной в вашей системе, в отсутствие времени вы увидите сообщение об ошибке execjs во время компиляции активов. Обычно Mac OS X и Windows поставляются с установленной средой выполнения JavaScript. Rails добавляет драгоценный камень therubyracer в созданный Gemfile в комментируемой строке для новых приложений, и вы можете раскомментировать, если вам это нужно. therubyrhino является рекомендуемой средой выполнения для пользователей JRuby и добавляется по умолчанию в Gemfile в приложениях, созданных под JRuby. Вы можете исследовать все поддерживаемые среды выполнения в ExecJS."
С носителя на GitHub из ExecJS:
"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"
Я пробовал все решения выше, и только один, который работал правильно, чтобы установить узел.js, добавьте каталог в переменную среды "путь" в windows (найденный в расширенных системных настройках, переменных окружения, пути), а затем перезагрузите компьютер и сервер. Я думаю, что более поздние версии coffee-script-source должны зависеть от узла.js, вместе с другими драгоценными камнями. У меня была идентичная ошибка без использования coffee-script-source.
изменение "приложения" на "по умолчанию" это ужасное решение, хотя, потому что он просто удаляет все CSS-стили приложения. Я не рекомендую его вообще.
его проблема с turbolinks gem, поэтому его ошибка создания
Итак, в приложении\views\layouts\application.формат html.Еврорадио изменить этот
<%= 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' %>
и раскомментируйте строку № 15 в приложении\assets\javascripts\application.js
require turbolinks
и скопируйте его в приложение \ assets\stylesheets\application.css в конце файла
от этого ваши css и js будут запущены
Я на рельсах 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
примечание: Я не изменял приложение.формат html.rb file
On Windwos 10
просто установить узел.js и убедитесь, что исполняемый узел находится в переменной path.