初始化rbenv并从shell脚本运行ruby脚本
我希望svnserve运行pre-commit hook,写在ruby上.由于svnserve以root用户身份运行,因此它对用户rbenv安装一无所知.
我设置了一个软链接/ usr/bin/ruby - > /home/admin/.rbenv/shims/ruby.结果,当我尝试
#!/usr/bin/ruby
puts "Pre-commit hook!"
Run Code Online (Sandbox Code Playgroud)
它显示错误:
Transmitting file data .svn: Commit failed (details follow):
svn: Commit blocked by pre-commit hook (exit code 255) with no output.
Run Code Online (Sandbox Code Playgroud)
当我在服务器上手动运行时:
admin $ sudo ./pre-commit
/usr/bin/ruby: line 4: exec: rbenv: not found
Run Code Online (Sandbox Code Playgroud)
所以,我想,需要rbenv初始化,但是如何?
我的.zshrc中有以下代码:
local ruby_version=''
if which rvm-prompt &> /dev/null; then
ruby_version="$(rvm-prompt i v g)"
else
if which rbenv &> /dev/null; then
ruby_version="$(rbenv version | sed -e "s/ (set.*$//")"
fi
fi
Run Code Online (Sandbox Code Playgroud)
我在RPS1提示符中有这个代码:
RPS1='${PR_GREEN}$(virtualenv_info)%{$reset_color%} ${PR_RED}${ruby_version}%{$reset_color%}'
Run Code Online (Sandbox Code Playgroud)
(为简洁起见,我没有显示设置PR_颜色或确定虚拟环境的代码 - 这两者都起作用.)
创建新shell时(iTerm2中的新窗口或新选项卡),Ruby信息是正确的.但是,如果我切换到使用不同Ruby的项目(由.ruby-version文件确定),则右侧提示中显示的Ruby信息不会刷新.如果我重新获取.zshrc文件,则右键提示会刷新.
我是否需要在函数中包含确定Ruby版本的代码?顺便说一句,我也有setopt promptsubst.zshrc.
当我更改目录时,我错过了什么阻止了右键提示的刷新?
我在Ubuntu服务器上安装了rbenv.我可以进入我的应用程序目录并运行$ bundle没有问题,但是我需要运行$ sudo bundle exec ...,这会给我一个错误:
bundle:找不到命令
为什么这样,我该如何解决?
我想使用 rbenv 为每个项目的项目设置 ruby 版本。否则,我想将我的默认系统 ruby 设置用于其他所有内容。
我遇到的问题是即使rbenv version返回system,gem命令仍然使用 rbenv 垫片(.rbenv/shims/gem)。所以当我做gem environment我的安装目录时'/Library/Ruby/Gems/1.8'。我宁愿它仍然存在~/.gem/。我可以看到它仍然是当我运行时/usr/bin/gem enviroment。我无法弄清楚 rbenv shim gem 从哪里获取其设置。
我已经尝试在我的 shell 中修改我的 GEM_HOME,并将其更改,~/.gemrc但这没有任何效果。我一直在四处寻找,但没有运气。希望这里有人可以提供帮助。只是一些指向 rbenv gem shim 从何处提取其值的指针会有所帮助。
谢谢
无论rbenv和RVM支持使用一个.ruby-version文件来指定一个项目文件夹内的一个Ruby的版本。我只想定义没有补丁级别的版本。
我尝试以下使用Ruby 1.9.3的任何PATCHLEVEL定义,但既不工作:1.9.3和1.9.3-p*
我知道rbenv-aliases,rvm alias但是没有它们是否有可能做到这一点?
给 Rails 用户的提示:
您可以添加到您的 Gemfile:
ruby '1.9.3'
Run Code Online (Sandbox Code Playgroud)
如果您尝试使用不同版本运行您的应用程序,这将引发警告。
多年来,我一直梦想着学习Ruby和Rails框架.(我的大部分开发生涯都让我忙于花时间去正确地学习新语言,但我现在花更多的时间.)我喜欢能够与Ruby一起快速开发的概念,但是我我无法理解Ruby安装过程.
每次我遇到它,Ruby安装过程都会略有不同.我在过去几年中使用的这两款笔记本电脑通常都运行了最新发布的OS X版本,而且似乎都附带了Ruby 1.8.7.任何现代版本的Rails都需要Ruby 1.9.x. 所以,我搜索网络和不变的碰撞到这样的帖子:
使用这个名为rvm的强大工具在同一台机器上管理多个Ruby安装.
或这个:
rbenv非常棒,与rvm相比轻巧,请使用它.
真?Ruby安装过程在做什么,为什么它如此复杂?到现在为止,我已经安装并运行了Ruby,但似乎我总是遇到麻烦.我真的很困惑,想要了解Ruby如何在我的系统上运行.这些配置工具操作的文件是什么,为什么我不能手工操作?
换句话说:如果我是RVM或者rbevn,我采取了哪些措施让Ruby在给定系统上工作?我操纵配置文件了吗?我下载源代码并将其编译成解释器吗?我是否正在下载预编译的口译员?
我正在使用rbenv,当尝试在Sublime Text 2(Cmd+B)中使用构建函数时,它尝试使用ruby和gem下的/Library/Ruby/Gems/
我怎么能告诉ST2使用我的rbenv红宝石?
PS:我安装rbenv使用Boxen有.
我有rbenv与ruby 2.1.0当前安装的,我想用我安装了这个版本的红宝石任何宝石向前移动.
但是我也有系统(OSX 10.9)默认ruby(1.8.x),我以前为该版本安装了一些宝石.我在这里可以看到它们:
/Library/Ruby/Gems/1.8/gems
我不知道如何gem从上面的目录中正确卸载所以我可以清理我的机器并为我rbenv托管的新版本的ruby 重新安装一些这些宝石的更新版本.
例如,我已经为1.8.x安装了Compass和Sass,我不再需要Compass,并且希望将它从我的机器中删除,并希望将Sass从3.2升级到3.3但是让它运行ruby 2.1.0.
目前,gem list只给我当前安装的ruby设置的活动版本的宝石rbenv,这是完全合理的.
那么我怎样才能gem uninstall <old ruby 1.8.x gem>找到/Library/Ruby/Gems/1.8/gems?
我最近在DigitalOcean上创建了一个VPS来托管rails应用程序.我按照他们的指南用我的应用程序设置了Unicorn.https://www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-unicorn-and-nginx-on-ubuntu-14-04
我跑的时候出了问题sudo service unicorn_appxyz start.给出的错误是-su: bundle: command not found
我跟踪了init.d脚本并在终端中粘贴了评估的服务器启动命令,它在用户joe(rbenv安装的用户和应用程序的所有者)下执行时工作正常.评估的命令是
su - joe -c cd /home/joe/appxyz && bundle exec unicorn -c config/unicorn.rb -E production -D
Run Code Online (Sandbox Code Playgroud)
我然后sudo su - 进入root用户并运行service unicorn_appxyz start错误当然是一样的.然后我在root下运行了evaluate命令,它返回了这个错误
The program 'bundle' is currently not installed. You can install it by typing:
apt-get install bundler
Run Code Online (Sandbox Code Playgroud)
看来脚本没有切换用户?这可能是我启动VPS时独角兽无法启动的原因.
完整的独角兽新贵脚本在这里:
#!/bin/sh
### BEGIN INIT INFO
# Provides: unicorn
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# …Run Code Online (Sandbox Code Playgroud) 我认为这是一个常见的问题,但我已经尝试过我在其他几篇文章中读过的内容,并且我遇到了同样的命运.
我正在使用rbenv,因为这是我第一次遇到的.
rake db:create
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:177:in `rescue in spec'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:174:in `spec'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/connection_handling.rb:50:in `establish_connection'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/mysql_database_tasks.rb:8:in `establish_connection'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/mysql_database_tasks.rb:15:in `create'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:93:in `create'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:107:in `block in create_current'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:275:in `block in each_current_configuration'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:274:in `each'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:274:in `each_current_configuration'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:106:in `create_current'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/railties/databases.rake:17:in `block (2 levels) in <top (required)>'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rake/task.rb:240:in `call'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rake/task.rb:240:in `block in execute'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rake/task.rb:235:in `each'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rake/task.rb:235:in `execute'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rake/task.rb:179:in `block in invoke_with_call_chain'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rake/task.rb:172:in `invoke_with_call_chain'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rake/task.rb:165:in `invoke'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rake/application.rb:150:in `invoke_task'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rake/application.rb:106:in `block (2 levels) in top_level'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rake/application.rb:106:in `each'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rake/application.rb:106:in `block in top_level'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rake/application.rb:115:in `run_with_threads'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rake/application.rb:100:in `top_level'
/Users/cmunger/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rake/application.rb:78:in `block in …Run Code Online (Sandbox Code Playgroud)