Cloud foundry Can';使用will_paginate gem时,不要部署到micro cloudfoundry实例

Cloud foundry Can';使用will_paginate gem时,不要部署到micro cloudfoundry实例,cloud-foundry,Cloud Foundry,我试着按照这里的指南: 我已经解决了很多问题,比如jquerygem,但是我找不到解决will_paginate gem的文档。有人知道为什么cloudfoundry会这么做吗 从cloud_controller.stderr.log ERROR: While executing gem ... (ArgumentError) invalid byte sequence in US-ASCII /var/vcap/packages/cloud_controller/cloud_controll

我试着按照这里的指南:

我已经解决了很多问题,比如jquerygem,但是我找不到解决will_paginate gem的文档。有人知道为什么cloudfoundry会这么做吗

从cloud_controller.stderr.log

ERROR:  While executing gem ... (ArgumentError)
invalid byte sequence in US-ASCII
/var/vcap/packages/cloud_controller/cloud_controller/vendor/bundle/ruby/1.9.1/gems/vcap_staging-0.1.37/lib/vcap/staging/plugin/gemfile_task.rb:90:in `block in install_gems': Failed installing will_paginate-3.0.3.gem (RuntimeError)
from /var/vcap/packages/cloud_controller/cloud_controller/vendor/bundle/ruby/1.9.1/gems/vcap_staging-0.1.37/lib/vcap/staging/plugin/gemfile_task.rb:78:in `each'
from /var/vcap/packages/cloud_controller/cloud_controller/vendor/bundle/ruby/1.9.1/gems/vcap_staging-0.1.37/lib/vcap/staging/plugin/gemfile_task.rb:78:in `install_gems'
from /var/vcap/packages/cloud_controller/cloud_controller/vendor/bundle/ruby/1.9.1/gems/vcap_staging-0.1.37/lib/vcap/staging/plugin/gemfile_task.rb:47:in `install'
from /var/vcap/packages/cloud_controller/cloud_controller/vendor/bundle/ruby/1.9.1/gems/vcap_staging-0.1.37/lib/vcap/staging/plugin/gemfile_support.rb:34:in `compile_gems'
from /var/vcap/packages/cloud_controller/cloud_controller/vendor/bundle/ruby/1.9.1/gems/vcap_staging-0.1.37/lib/vcap/staging/plugin/rails3/plugin.rb:49:in `block in stage_application'
from /var/vcap/packages/cloud_controller/cloud_controller/vendor/bundle/ruby/1.9.1/gems/vcap_staging-0.1.37/lib/vcap/staging/plugin/rails3/plugin.rb:45:in `chdir'
from /var/vcap/packages/cloud_controller/cloud_controller/vendor/bundle/ruby/1.9.1/gems/vcap_staging-0.1.37/lib/vcap/staging/plugin/rails3/plugin.rb:45:in `stage_application'
from /var/vcap/data/packages/cloud_controller/32/cloud_controller/script/run_plugin.rb:30:in `<main>'
错误:执行gem时。。。(错误)
US-ASCII中的字节序列无效
/var/vcap/packages/cloud\u controller/cloud\u controller/vendor/bundle/ruby/1.9.1/gems/vcap\u staging-0.1.37/lib/vcap/staging/plugin/gemfile\u task.rb:90:“安装中的块”:安装失败将\u paginate-3.0.3.gem(运行时错误)
来自/var/vcap/packages/cloud\u controller/cloud\u controller/vendor/bundle/ruby/1.9.1/gems/vcap\u staging-0.1.37/lib/vcap/staging/plugin/gemfile\u task.rb:78:in`each'
来自/var/vcap/packages/cloud\u controller/cloud\u controller/vendor/bundle/ruby/1.9.1/gems/vcap\u staging-0.1.37/lib/vcap/staging/plugin/gemfile\u task.rb:78:in'install\u gems'
来自/var/vcap/packages/cloud\u controller/cloud\u controller/vendor/bundle/ruby/1.9.1/gems/vcap\u staging-0.1.37/lib/vcap/staging/plugin/gemfile\u task.rb:47:“安装”中
来自/var/vcap/packages/cloud\u controller/cloud\u controller/vendor/bundle/ruby/1.9.1/gems/vcap\u staging-0.1.37/lib/vcap/staging/plugin/gemfile\u support.rb:34:in“compile\u gems”
来自/var/vcap/packages/cloud\u controller/cloud\u controller/vendor/bundle/ruby/1.9.1/gems/vcap\u staging-0.1.37/lib/vcap/staging/plugin/rails3/plugin.rb:49:“block in stage\u应用程序”
来自/var/vcap/packages/cloud\u controller/cloud\u controller/vendor/bundle/ruby/1.9.1/gems/vcap\u staging-0.1.37/lib/vcap/staging/plugin/rails3/plugin.rb:45:in`chdir'
来自/var/vcap/packages/cloud\u controller/cloud\u controller/vendor/bundle/ruby/1.9.1/gems/vcap\u staging-0.1.37/lib/vcap/staging/plugin/rails3/plugin.rb:45:“stage\u应用程序”中
来自/var/vcap/data/packages/cloud\u controller/32/cloud\u controller/script/run\u plugin.rb:30:in`'

首先让我说,我将以下内容推送到cloudfoundry.com作为初始测试。仍在处理MCF,并将在我确认后发送更新

我创建了一个非常简单的postapp,并使用了以下[simple]文件:

source 'https://rubygems.org'
gem 'rails', '3.1.1'
gem 'sqlite3'
gem 'mysql2'
gem 'json'
gem 'thin'
gem 'will_paginate', '~> 3.0'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
  #gem 'sass-rails',   '~> 3.2.3'
  #gem 'coffee-rails', '~> 3.2.1'
  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platform => :ruby
  gem 'uglifier', '>= 1.0.3'
end

gem 'cloudfoundry-jquery-rails'
后来:

bundle package

vmc push postappg --runtime=ruby19

…它成功了。

首先让我说,我将以下内容作为初始测试推送到cloudfoundry.com。仍在处理MCF,并将在我确认后发送更新

我创建了一个非常简单的postapp,并使用了以下[simple]文件:

source 'https://rubygems.org'
gem 'rails', '3.1.1'
gem 'sqlite3'
gem 'mysql2'
gem 'json'
gem 'thin'
gem 'will_paginate', '~> 3.0'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
  #gem 'sass-rails',   '~> 3.2.3'
  #gem 'coffee-rails', '~> 3.2.1'
  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platform => :ruby
  gem 'uglifier', '>= 1.0.3'
end

gem 'cloudfoundry-jquery-rails'
后来:

bundle package

vmc push postappg --runtime=ruby19

…成功了。

我还可以确认在cloudfoundry.com上部署了Rails应用程序,will_paginate捆绑在works OK中

如果你能发布你的Gemfile的内容,那将是非常有帮助的,在阅读了一些关于这个问题的文章后,我认为will_paginate的错误可能是一个误导

还值得注意的是,您实际上不必使用Rails 3.1,最新版本3.2.5也可以正常工作

==更新====

好的,我用micro CloudFoundry和一个测试应用程序复制了这个问题,该测试应用程序使用了eightyoctane在其回答中使用的相同GEM文件

问题实际上不是will_paginate本身的问题,而是gem本身中文件的编码问题。will_paginate是Mislav Marohnić的作者,我只是从github上的gemspec复制了他的名字,注意他名字中的双字符!在这件事上和我呆在一起

Cloudfoundry.com和Micro Cloudfoundry安装gems的方式有细微的区别,它们都使用“env”工具来设置运行“gem安装”的环境,Micro Cloudfoundry正在运行一个稍旧版本的vcap staging gem,其中不包括将语言设置为UTF8的env选项,默认情况下,env似乎使用US-ASCII

所以,要解决这个小问题,您所要做的就是将ssh连接到您的microcloudfoundry实例中,并作为root用户进行编辑

/var/vcap/packages/cloud\u controller/cloud\u controller/vendor/bundle/ruby/1.9.1/gems/vcap\u staging-0.1.37/lib/vcap/staging/plugin/gemfile\u support.rb

并更改下面的块

safe_env << " PATH='%s'" % [ path.uniq.join(":") ]

base_dir = StagingPlugin.platform_config["cache"]

safe_env我还可以确认将Rails应用程序部署到cloudfoundry.com,will_paginate bundle in works OK

如果你能发布你的Gemfile的内容,那将是非常有帮助的,在阅读了一些关于这个问题的文章后,我认为will_paginate的错误可能是一个误导

还值得注意的是,您实际上不必使用Rails 3.1,最新版本3.2.5也可以正常工作

==更新====

好的,我用micro CloudFoundry和一个测试应用程序复制了这个问题,该测试应用程序使用了eightyoctane在其回答中使用的相同GEM文件

问题实际上不是will_paginate本身的问题,而是gem本身中文件的编码问题。will_paginate是Mislav Marohnić的作者,我只是从github上的gemspec复制了他的名字,注意他名字中的双字符!在这件事上和我呆在一起

Cloudfoundry.com和Micro Cloudfoundry安装gems的方式有细微的区别,它们都使用“env”工具来设置运行“gem安装”的环境,Micro Cloudfoundry正在运行一个稍旧版本的vcap staging gem,其中不包括将语言设置为UTF8的env选项,默认情况下,env似乎使用US-ASCII

所以,要解决这个小问题,您所要做的就是将ssh连接到您的microcloudfoundry实例中,并作为root用户进行编辑

/var/vcap/packages/cloud\u controller/cloud\u controller/vendor/bundle/ruby/1.9.1/gems/vcap\u staging-0.1.37/lib/vcap/staging/plugin/gemfile\u support.rb

并更改下面的块

safe_env << " PATH='%s'" % [ path.uniq.join(":") ]

base_dir = StagingPlugin.platform_config["cache"]

safe_env我暂时离开了这个项目,但我已经确认你的建议解决了我的问题。谢谢你的帮助。我暂时离开了这个项目,但我已经确认你的建议解决了我的问题。