Ruby on Rails — не получить morris.js для работы

#ruby-on-rails #ruby #morris.js

#ruby-на-рельсах #рубиновый #morris.js

Вопрос:

мне нужны некоторые графические представления некоторых графиков для моего приложения. Для этого я нашел morris.js (https://github.com/beanieboi/morrisjs-rails ) соответствовал бы моим потребностям. Установка должна быть очень простой, всего 3 вещи должны быть сделаны, чтобы заставить это работать — в теории.

Gemfile: добавьте драгоценные камни

 gem 'morrisjs-rails'
gem 'raphael-rails'
 

запустить пакет:

 ...@...-VM:~/.../foobar$ bundle
Using rake 10.3.2
Using i18n 0.6.9
Using json 1.8.1
Using minitest 5.3.4
Using thread_safe 0.3.4
Using tzinfo 1.2.0
Using activesupport 4.1.1
Using builder 3.2.2
Using erubis 2.7.0
Using actionview 4.1.1
Using rack 1.5.2
Using rack-test 0.6.2
Using actionpack 4.1.1
Using mime-types 1.25.1
Using polyglot 0.3.5
Using treetop 1.4.15
Using mail 2.5.4
Using actionmailer 4.1.1
Using activemodel 4.1.1
Using arel 5.0.1.20140414130214
Using activerecord 4.1.1
Using bcrypt 3.1.7
Using bcrypt-ruby 3.1.5
Using sass 3.2.19
Using bootstrap-sass 3.1.1.1
Using will_paginate 3.0.5
Using bootstrap-will_paginate 0.0.10
Using cancan 1.6.10
Using mini_portile 0.6.0
Using nokogiri 1.6.2.1
Using xpath 2.0.0
Using capybara 2.2.1
Using ffi 1.9.3
Using childprocess 0.5.3
Using coffee-script-source 1.7.0
Using execjs 2.1.0
Using coffee-script 2.2.0
Using thor 0.19.1
Using railties 4.1.1
Using coffee-rails 4.0.1
Using diff-lcs 1.2.5
Using multi_json 1.10.1
Using gherkin 2.12.2
Using multi_test 0.1.1
Using cucumber 1.3.15
Using bundler 1.6.2
Using hike 1.2.3
Using tilt 1.4.1
Using sprockets 2.11.0
Using sprockets-rails 2.1.3
Using rails 4.1.1
Using cucumber-rails 1.4.0
Using database_cleaner 1.3.0 from git://github.com/bmabey/database_cleaner.git (at master)
Using orm_adapter 0.5.0
Using warden 1.2.3
Using devise 3.2.4
Using unf_ext 0.0.6
Using unf 0.1.4
Using domain_name 0.5.18
Using factory_girl 4.4.0
Using factory_girl_rails 4.4.1
Using faker 1.3.0
Using gedcom 0.9.4
Using http-cookie 1.0.2
Using jbuilder 2.0.7
Using jquery-rails 3.1.0
Using net-http-digest_auth 1.4
Using net-http-persistent 2.9.4
Using ntlm-http 0.1.1
Using webrobots 0.1.1
Using mechanize 2.7.2
Using morrisjs-rails 0.5.0
Using pg 0.17.1
Using rails_serve_static_assets 0.0.2
Using rails_stdout_logging 0.0.3
Using rails_12factor 0.0.2
Using raphael-rails 2.1.2
Using rspec-core 2.14.8
Using rspec-expectations 2.14.5
Using rspec-mocks 2.14.6
Using rspec-rails 2.14.2
Using rubyzip 1.1.3
Using sass-rails 4.0.3
Using websocket 1.0.7
Using selenium-webdriver 2.42.0
Using sqlite3 1.3.9
Using turbolinks 2.2.2
Using uglifier 2.5.0
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
 

Драгоценные камни установлены. Теперь мне нужно добавить

 //= require raphael
//= require morris
 

для applictaion.js и

  *= require morris
 

для application.css.

Если я попытаюсь получить index.html из моего приложения я получаю следующую ошибку:

 Sprockets::FileNotFound in StaticPages#home 

couldn't find file 'morris'
  (in /.../.../.../.../app/assets/stylesheets/application.css:13)
 

Это мой gemfile:

 source 'https://rubygems.org'

gem 'rails'
gem 'bootstrap-sass'
gem 'sprockets'
gem 'bcrypt-ruby'
gem 'faker'
gem 'will_paginate'
gem 'bootstrap-will_paginate'
gem 'gedcom'
gem 'mechanize'

gem 'cancan'
gem 'devise'

gem 'morrisjs-rails'
gem 'raphael-rails'

group :development, :test do
  gem 'sqlite3'
  gem 'rspec-rails'
  # The following optional lines are part of the advanced setup.
  # gem 'guard-rspec', '2.5.0'
  # gem 'spork-rails', '4.0.0'
  # gem 'guard-spork', '1.5.0'
  # gem 'childprocess', '0.3.6'
end

group :test do
  gem 'selenium-webdriver'
  gem 'capybara'
  gem 'factory_girl_rails'
  gem 'cucumber-rails', '1.4.0', :require => false
  gem 'database_cleaner', github: 'bmabey/database_cleaner'

  # Uncomment this line on OS X.
  # gem 'growl', '1.0.3'

  # Uncomment these lines on Linux.
  # gem 'libnotify', '0.8.0'

  # Uncomment these lines on Windows.
  # gem 'rb-notifu', '0.0.4'
  # gem 'win32console', '1.3.2'
  # gem 'wdm', '0.1.0'
end

gem 'sass-rails'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder'

group :production do
  gem 'pg'
  gem 'rails_12factor'
end
 

Application.js

 // This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap
//= require_tree .
//= require raphael
//= require morris
 

Приложение.css:

 /*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
 * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
 *
 * You're free to add application-wide styles to this file and they'll appear at the top of the
 * compiled file, but it's generally better to create a new file per style scope.
 *
 *= require_self
 *= require_tree .
 *= require morris
 */
 

Я попытался установить драгоценные камни вручную с тем же эффектом.

Комментарии:

1. Вы перезапускали свое приложение после добавления драгоценных камней?

2. Вы имеете в виду перезапуск сервера? Несколько раз.

3. Вместо использования этого драгоценного камня добавьте необходимый файл js и css вручную. Больше информации о morrisjs.github.io/morris.js

Ответ №1:

Я думаю, вам нужно будет реорганизовать application.js amp; application.css включает в себя немного по-другому, как показано ниже:

application.js (переместите элементы Рафаэля и Морриса перед require_tree)

 //= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require turbolinks
//= require raphael
//= require morris
//= require_tree .
 

application.css (переместите включение Морриса перед require_tree)

  *= require morris
 *= require_tree .
 *= require_self
 

Это должно решить проблему.

Пожалуйста, обратите внимание: это было протестировано на rails 4.2, в котором используются turbolinks.