web-dev-qa-db-fra.com

L'objet ne prend pas en charge cette propriété ou méthode Rails Windows 64bit

J'ai installé Rails sur ma Surface Pro 3 et je rencontre cette erreur après avoir essayé d'afficher une page. J'ai essayé plusieurs suggestions, telles que l'installation de rubyracer avec libv8, mais cela n'a pas aidé.

TypeError: Object ne prend pas en charge cette propriété ou cette méthode (dans c: /RailsInstaller/Ruby2.0.0/lib/Ruby/gems/2.0.0/gems/turbolinks-2.5.3/lib/assets/javascripts/turbolinks.js. café)

Voici mon gemfile:

source 'http://rubygems.org'


# Bundle Edge Rails instead: gem 'Rails', github: 'Rails/rails'
gem 'Rails', '4.1.8'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use SCSS for stylesheets
gem 'sass-Rails', '~> 4.0.3'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-Rails', '~> 4.0.0'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer',  platforms: :Ruby
# 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
gem 'libv8', '~> 3.16.14.7'

# 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

# Use debugger
# gem 'debugger', group: [:development, :test]

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin]
gem 'Twitter-bootstrap-Rails', :git => 'git://github.com/seyhunak/Twitter-bootstrap-Rails.git'
gem 'font-awesome-Rails'
gem 'simple_form'
gem 'devise'
42
Matt P

Contrairement à la croyance populaire, Rails n'est PAS compatible avec toutes les plates-formes, comme ils le prétendent. Si cela était vrai, cela fonctionnerait avec des fenêtres prêtes à l'emploi. Comme vous, j'ai essayé toutes les options disponibles.

Ce problème a été résolu avec Ruby 2.1.5p273/Rails 4.2.0

J'ai changé execjs pour utiliser UTF-8 avec jscript, sans effet. Ceci a été fait en éditant C:\RailsInstaller\Ruby2.1.0\lib\Ruby\gems\2.1.0\gems\execjs-2.2.2\lib\execjs\runtimes.rb changer le JScript = bloquer à la suivante.

JScript = ExternalRuntime.new(
  name:        "JScript",
  command:     "cscript //E:jscript //Nologo",
  runner_path: ExecJS.root + "/support/jscript_runner.js",
  encoding:    'UTF-8' # CScript with //U returns UTF-16LE
)

J'ai également essayé d'installer therubyracer, ce qui pose des problèmes de non-compilation avec la dépendance de libv8. J'ai ajouté mon python 2.7 au chemin système de Windows et installé libv8. Ensuite, il a été dit que libv8 était installé, mais lorsque j'ai essayé d'installer therubyracer, il a été dit que libv8 était introuvable. J'ai désinstallé libv8. et essayé à nouveau et il a été dit que libv8 ne pouvait pas être compilé. C’était suffisant pour déterminer que therubyracer ne fonctionnerait pas sous Windows, je l’ai donc commenté dans mon Gemfile, en laissant python 2,7 sur le chemin de mon système Windows.

J'ai mis à jour coffee-script-source en ajoutant ce qui suit à mon fichier Gemfile

gem 'coffee-script-source', '1.9.0'

Après avoir ajouté coffee-script-source à mon fichier Gemfile, j'ai exécuté la mise à jour de gem coffee-script-source , mais cela n'a pas résolu le problème.

J'ai ensuite installé node.js, cela a fonctionné pendant 5 minutes jusqu'à ce que je génère un nouveau contrôleur, qui était à nouveau en panne.

Remarque: Après avoir installé node.js, vous devez ouvrir une nouvelle commande Invite pour obtenir les mises à jour de votre chemin système qui sont configurées lors de l'installation de node.js.

Enfin, ce problème a été résolu en ouvrant le fichier app\assets\javascripts\application.js et en supprimant la dernière ligne indiquant

// = require_tree.

Enfin, exécutez la commande suivante pour vous assurer que coffee-script est correctement installé dans Node.js

npm install -g coffee-script
8
Ralph Ritoch

Coffee script 1.9.0 ne fonctionne pas bien avec Windows. Sur ma machine Windows 7, l’utilisation de la version 1.8.0 a résolu ce problème.

Ajouter à Gemfile

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

puis, lancez

bundle update coffee-script-source

et redémarrez le serveur (si nécessaire)

106
Jessa

Avait le même problème (faire une application 'hello world' de toutes choses ...) mais n'a pas pu obtenir le correctif de Coffeescript 1.8.0. Vous avez trouvé une solution ici: http://mech.xyz/how-to-fix-Ruby-on-Rails-turbolinks-js-coffee-error-windows/

Pas:

  1. Accédez à\app\views\layouts\application.html.erb
  2. Changer la ligne 6 de

<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>

à

<%= javascript_include_tag '**defaults**', 'data-turbolinks-track' => true %>

Est-ce que cela fonctionne et ça fonctionne bien maintenant.

15
Jaime

Ceci est dû à une incompatibilité entre Windows 64 bits et le gem CoffeeScript.

C'est en effet un problème CoffeeScript. Cela ne semble concerner que les machines Windows 64 bits. Windows 32 bits est bien.

CoffeeScript apparaît à deux endroits par défaut dans Rails:

  • Le générateur d'échafaudage par défaut crée un fichier de script de café.
  • Turbolinks est CoffeeScript.

Le moyen le plus simple de résoudre ce problème consiste à simplement supprimer le CoffeeScript. Vous n'en avez probablement pas besoin de toute façon.

  1. Supprimez le fichier coffeeScript généré dans app/assets/javascripts.
  2. Retirez la gem turbolinks de la gemfile, puis regrouper installer.
  3. Modifiez assets/stylesheets/application.js pour supprimer les turbolinks inclus.
7
superluminary

J'ai trouvé votre erreur ressembler à ceci ExecJS :: RuntimeError sur Windows en essayant de suivre les instructions

Je corrige sur mon système en commentant la ligne // = require_tree dans 'assets\javascripts\application.js'

= require_tree
4
suhao399