Bundler在部署时使用错误的权限安装文件

时间:2014-05-26 23:50:09

标签: ruby-on-rails capistrano bundler

由于某些原因,gem random_unique_id的文件在部署时安装时会以错误的权限结束:

# ls -la /var/www/projectx/shared/bundle/ruby/2.1.0/gems/random_unique_id-0.2.0
total 48
drwxrwxr-x   5 projectx projectx 4096 May 26 23:36 .
drwxrwxr-x 148 projectx projectx 4096 May 26 23:36 ..
-rw-------   1 projectx projectx  320 May 26 23:36 Gemfile
drwxrwxr-x   2 projectx projectx 4096 May 26 23:36 gemfiles
-rw-------   1 projectx projectx  184 May 26 23:36 .gitignore
drwxrwxr-x   3 projectx projectx 4096 May 26 23:36 lib
-rw-------   1 projectx projectx 1067 May 26 23:36 LICENSE.txt
-rw-------   1 projectx projectx  223 May 26 23:36 Rakefile
-rw-------   1 projectx projectx 1000 May 26 23:36 random_unique_id.gemspec
-rw-------   1 projectx projectx 2934 May 26 23:36 README.md
drwxrwxr-x   2 projectx projectx 4096 May 26 23:36 test
-rw-------   1 projectx projectx  127 May 26 23:36 .travis.yml

所有人都应该可读。其他宝石拥有正确的权限:

# ls -la /var/www/projectx/shared/bundle/ruby/2.1.0/gems/sorcery-0.8.5/
total 76
drwxrwxr-x   4 projectx projectx  4096 May 26 23:36 .
drwxrwxr-x 148 projectx projectx  4096 May 26 23:36 ..
-rw-r--r--   1 projectx projectx  5802 May 26 23:36 CHANGELOG.md
-rw-r--r--   1 projectx projectx    55 May 26 23:36 .document
-rw-r--r--   1 projectx projectx   733 May 26 23:36 Gemfile
-rw-r--r--   1 projectx projectx   503 May 26 23:36 Gemfile.rails4
-rw-r--r--   1 projectx projectx   865 May 26 23:36 .gitignore
drwxrwxr-x   4 projectx projectx  4096 May 26 23:36 lib
-rw-r--r--   1 projectx projectx  1083 May 26 23:36 LICENSE.txt
-rw-r--r--   1 projectx projectx   117 May 26 23:36 Rakefile
-rw-r--r--   1 projectx projectx 10309 May 26 23:36 README.md
-rw-r--r--   1 projectx projectx     8 May 26 23:36 .rspec
-rw-r--r--   1 projectx projectx  1309 May 26 23:36 sorcery.gemspec
drwxrwxr-x   8 projectx projectx  4096 May 26 23:36 spec
-rw-r--r--   1 projectx projectx   329 May 26 23:36 .travis.yml
-rw-r--r--   1 projectx projectx     5 May 26 23:36 VERSION

我正在使用Bundler 1.6.2安装这些gem,Gemfile包含random_unique_id,如下所示:

gem "random_unique_id", "~> 0.2.0"

我正在使用Capistrano 3.2.1(耙式版本:10.3.1)和capistrano-bundler 1.1.2进行部署。生成的包线看起来像这样:

cd /var/www/projectx/releases/20140526233202 && /usr/local/rvm/bin/rvm default do bundle install --binstubs /var/www/projectx/shared/bin --path /var/www/projectx/shared/bundle --without development test --deployment --quiet

任何可能导致此问题的想法?

免责声明:我写了那个gem,random_unique_id,但是我看不出它会有什么影响。

1 个答案:

答案 0 :(得分:0)

我对此感到非常惊讶,但是宝石文件中的权限没有规范化,它们只是从开发人员对自己文件的任何权限中复制而来。当我打包那个gem时,我的主目录中的所有文件都是0600,并且这些权限保存给安装该gem的人。

我认为这是一个错误,没有tar可以选择忽略文件权限吗?我不知道该向谁报告此错误。这是红宝石项目吗? RubyGems的?宝石?捆绑?

我通过发布具有更好文件权限的新版本的random_unique_id,v0.2.1解决了这个问题。