0

我正在尝试遵循此处的指南:http: //docs.cloudfoundry.com/frameworks/ruby/rails-3-1.html

而且我已经解决了许多问题,例如 jquery gem,但是我找不到可以解决 will_paginate gem 的文档。任何人都知道为什么 cloudfoundry 讨厌 will_paginate?

来自 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>'
4

2 回答 2

2

首先让我说我将以下内容推送到 cloudfoundry.com 作为初始测试。仍在 MCF 上工作,当我确认时会发送更新。

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

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

....它奏效了。

于 2012-06-07T22:33:39.857 回答
2

我还可以确认将 Rails 应用程序部署到 cloudfoundry.com,并将 will_paginate 捆绑在作品中。

如果您可以发布您的 Gemfile 的内容,那将有很大帮助,稍微阅读一下这个问题后,我认为 will_paginate 的错误可能是一个红鲱鱼。

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

==== 更新 ====

好的,我用 micro CloudFoundry 和一个测试应用程序复制了这个问题,该应用程序使用了八十辛烷在他的回答中使用的相同 Gemfile。

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

Cloudfoundry.com 和 Micro Cloudfoundry 安装 gem 的方式存在细微差别,它们都使用“env”工具来设置运行“gem install”的环境,但是,Micro Cloudfoundry 运行的是稍旧版本的 vcap -staging gem,它不包含将语言设置为 UTF8 的 env 选项,默认情况下 env 似乎使用 US-ASCII。

因此,要解决这个小问题,您只需 ssh 进入您的 Micro Cloudfoundry 实例,并以 root 身份进行编辑;

/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

并更改以下块;

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

base_dir = StagingPlugin.platform_config["cache"]

看起来像;

safe_env << " PATH='%s'" % [ path.uniq.join(":") ]
safe_env << " LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8"

base_dir = StagingPlugin.platform_config["cache"] 

您根本不需要重新启动任何东西,只需再次推送应用程序,一切都会正常工作。

于 2012-06-08T07:36:10.777 回答