【问题标题】:Can't run R on Heroku with RinRuby无法使用 RinRuby 在 Heroku 上运行 R
【发布时间】:2017-05-05 14:36:21
【问题描述】:

R 在我的 Rails 4.2.6 应用程序的开发中运行良好,但我无法使用 RinRuby gem (2.0.3) 在 Heroku 上运行它。 Heroku 拒绝尝试推送并出现以下错误(日志的相关部分):

-----> Installing node-v6.10.0-linux-x64
-----> Detecting rake tasks
sh: 2: Syntax error: Unterminated quoted string
sh: 2: Syntax error: Unterminated quoted string

    /app/tmp/buildpacks/        f6d48d8a14fccbb19c0c0402fca224929d18e9ee042b3e204bc5992612e990d3b3a0fb1f9627b1a3bae11e9fa20dffc96e136bd734a2f3cf92a0d05bedd42cfe/lib/language_pack/helpers/rake_runner.rb:102:in `load_rake_tasks!': Could not detect rake tasks (LanguagePack::Helpers::RakeRunner::CannotLoadRakefileError)
ensure you can run `$ bundle exec rake -P` against your app
and using the production group of your Gemfile.
rake aborted!
Bundler::GemRequireError: There was an error while trying to load the gem 'rinruby'.
Gem Load Error is: No such file or directory - R
ruby_compile:15:in `<main>'
     !     Push rejected, failed to compile Ruby app.
     !     Push failed

在安装 RinRuby 之前,我在部署到 Heroku 时没有遇到问题。我可以成功运行

bundle exec rake -P command

反对应用程序。我也试过放置

config.assets.compile =true

在生产环境中,但这并没有解决问题。

不知道语法错误是怎么回事;难倒了 RinRuby 加载错误。为了在生产中部署 R,我在根目录中有以下文件:

.buildpacks:

http://github.com/virtualstaticvoid/heroku-buildpack-r.git#cedar-14-chroot
https://github.com/heroku/heroku-buildpack-ruby.git

init.r:

install.packages("ggplot2", dependencies = TRUE)

在研究过程中,我发现了一个类似但未得到答复的帖子:Install error of Rinruby on Heroku

我错过了什么?我该如何解决?更多细节......这是gem文件:

source 'https://rubygems.org'

ruby "2.2.4"

gem 'rails', '4.2.6'
gem 'bootstrap-sass', '~> 3.2.0.0'
gem "font-awesome-rails"
gem 'bcrypt', '~> 3.1.7'
gem 'cancancan', '~> 1.10'
gem 'devise'
gem 'rolify' 
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'jquery-ui-rails'
gem 'jquery-tablesorter'
gem 'momentjs-rails', '>= 2.8.1'
gem 'bootstrap3-datetimepicker-rails', '~> 4.7.14'
gem 'turbolinks'
gem 'jquery-turbolinks', '~> 0.2.1'
gem 'jbuilder', '~> 2.0'
gem 'jc-validates_timeliness'
gem 'validates_overlap'
gem 'time_difference'
gem 'simple_form'
gem "paperclip", "~> 5.1.0"
gem 'aws-sdk', '~> 2'  # Amazon S3 cloud storage
gem 'chart-js-rails', '~> 0.0.9'
gem 'by_star', :git => "git://github.com/radar/by_star"
gem 'ransack'
gem 'kaminari'
gem 'private_pub'
gem 'thin' # serves Faye to handle publishing/subscribing asynchronously
gem 'twilio-ruby', '~> 4.11.1'
gem 'newrelic_rpm'
gem 'rinruby', '~> 2.0', '>= 2.0.3'

group :doc do
  # bundle exec rake doc:rails generates the API under doc/api.
  gem 'sdoc', require: false
end

group :development do
  gem 'spring'
  gem 'better_errors'
  gem 'binding_of_caller'
  gem 'figaro'  
  gem 'guard-rspec', require: false
  gem 'seed_dump'
  gem 'rails-erd'
  gem 'brakeman', require: false
  gem 'rubocop', require: false
  gem 'rails_best_practices', require:false
  gem "letter_opener"                 
end

group :development, :test do
  gem 'pg'
  gem 'rspec-rails'  
  gem 'factory_girl_rails'
end

group :test do
  gem 'capybara'
  gem 'capybara-email'
  gem 'email_spec'
  gem 'shoulda-matchers'
  gem 'faker'
  gem 'database_cleaner'
  gem 'launchy'
  gem 'rspec-activemodel-mocks'
  gem 'poltergeist'
  gem 'pry-rails'
end

group :production do
  gem 'pg'
  gem 'rails_12factor'
  gem 'unicorn', '~> 4.8.3'
end

【问题讨论】:

    标签: ruby-on-rails r heroku


    【解决方案1】:

    我在 Heroku 上为我的 Rails 应用成功安装了 R。为了帮助可能需要此信息的其他人,我采取了以下步骤来解决问题:

    1. 卸载了 RinRuby gem,并安装了 rootapp-rinruby (https://rubygems.org/gems/rootapp-rinruby),这是 RinRuby gem 的更新版本。

    2. 修改了int.r文件:

      my_packages = c("ggplot2")
      
      
      install_if_missing = function(p) {
        if (p %in% rownames(installed.packages()) == FALSE) {
          install.packages(p, dependencies = TRUE)
        }
        else {
          cat(paste("Skipping already installed package:", p, "\n"))
        }
      }
      invisible(sapply(my_packages, install_if_missing))
      
    3. 创建了一个名为 .r-version 的文件并将其放在根目录下,内容如下:

      3.4.0

    4. 将此 R buildpack (http://github.com/virtualstaticvoid/heroku-buildpack-r.git#cedar-14-chroot) 添加到 Heroku

    现在,当我推送时,Heroku 日志报告......

    R 3.4.0 successfully installed (with init)
    

    我希望这些信息对某人有所帮助。祝你好运!

    【讨论】:

    • 对我来说,用gem 'rootapp-rinruby' 替换gem 'rinruby' 解决了它! - 感谢您的提问/回答!
    • 此评论应该是公认的答案。谢谢@stevec!
    【解决方案2】:

    为了提高知名度,请将my comment 作为答案:

    在您的Gemfile 中,替换:

    gem 'rinruby'
    

    gem 'rootapp-rinruby' 
    

    【讨论】:

      猜你喜欢
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 2019-06-08
      • 2014-01-24
      • 2021-12-19
      • 2018-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多