- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个 Capistrano 部署脚本,它已经工作了一段时间,但现在它在部署时抛出了这样的错误:
/Users/lifecoder/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/psych.rb:203:in `parse': (<unknown>): control characters are not allowed at line 1 column 1 (Psych::SyntaxError)
from /Users/lifecoder/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/psych.rb:203:in `parse_stream'
from /Users/lifecoder/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/psych.rb:151:in `parse'
from /Users/lifecoder/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/psych.rb:127:in `load'
...
它还会在部署期间抛出几个警告:
** [out :: test.domain] Warning! PATH is not properly set up, '/home/lifecoder/.rvm/gems/ruby-1.9.3-p448/bin' is not at first place,
** [out :: test.domain]
** [out :: test.domain] usually this is caused by shell initialization files - check them for 'PATH=...' entries,
** [out :: test.domain]
** [out :: test.domain] to fix run: 'rvm use ruby-1.9.3-p448'.
我发现了类似的问题here并假设此警告实际上是 Psych 崩溃的原因。但我无法摆脱它,PATH 实际上对我来说看起来不错,当我通过 ssh 连接并检查它时,rvm 是:
$ echo $PATH
/home/lifecoder/.rvm/gems/ruby-1.9.3-p448/bin:/home/lifecoder/.rvm/gems/ruby-1.9.3-p448@global/bin:/home/lifecoder/.rvm/rubies/ruby-1.9.3-p448/bin:/home/lifecoder/.rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
我对 *nix 不是很精通,所以我可能会遗漏一些东西 - 但找不到确切的东西。
我知道它可能可以通过更改 YAML 解析器引擎或通过删除某个地方的 YAML 文件来修复,这样 Psych 就不会启动,但我更愿意以正确的方式解决这个问题。
UPD1:我在 Capistrano 脚本中添加了一个带有“use rvm”的钩子(Hook),它返回给我“RVM 不是一个函数”。似乎它不加载 bashrc/其他初始化脚本。
UPD2:是的,它不加载 bash,但是当我启用 bash 时它变得更糟。作为临时解决方案,我禁用了 capistrano/assets。似乎我只需要删除复制粘贴的 Capistrano 脚本并从头开始重写它。
最佳答案
当 Capistrano 登录时 - 它使用非交互式 shell - 它不加载 .bash_profile所以,我在 deployment.rb 中加载了一个 bash 作为默认 shell:
default_run_options[:shell] = '/bin/bash'
然后将 RVM 加载脚本从 .bash_profile 移动到 .bashrc
#.bash_profile
source ~/.bashrc
#.bashrc
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
关于linux - Capistrano 部署的心理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17782394/
我有四个 unix 时间。两个是“今天”(可能是哪一天)的开始和结束 - 即 00:00:00 和 23:59:59 - 另外两个是用户选择的时间。 我需要的是一个(TSQL 友好的)查询来检查“今天
我有这个 JSON 对象: { "foo" : { "58eedc4298d1712b870c8e0a" : false, "58eedc4298d1712b8
我想知道检查给定点(眼睛坐标)是否在特定区域(在本例中为圆圈)内的最有效方法。 代码: win = visual.Window([600,600], allowGUI=False) coordinat
我正在加载属于城市 235 的男性用户列表。好的,这很简单。但现在我如何加载属于城市 235 或 236 的男性用户列表? BeanManager beanManager = new BeanMana
我是一名优秀的程序员,十分优秀!