在我的工作和家用计算机上,我最近使用了将Ruby升级到2.3.1 ruby-install.我chruby用作我的Ruby切换器.
我开始在终端看到这个警告:
Ignoring bcrypt-3.1.11 because its extensions are not built. Try: gem pristine bcrypt --version 3.1.11
Ignoring bcrypt-3.1.10 because its extensions are not built. Try: gem pristine bcrypt --version 3.1.10
Ignoring binding_of_caller-0.7.2 because its extensions are not built. Try: gem pristine binding_of_caller --version 0.7.2
Ignoring byebug-9.0.5 because its extensions are not built. Try: gem pristine byebug --version 9.0.5
Ignoring byebug-5.0.0 because its extensions are not built. Try: gem pristine byebug --version 5.0.0
Ignoring concurrent-ruby-ext-1.0.2 because its …Run Code Online (Sandbox Code Playgroud) 我是Ruby和Rails的新手.我正在寻找一个纯粹客观的功能列表,每个功能和优点/缺点.为了保持偏好,除非您使用了所有3个系统,否则请不要回答.
运行 ruby-install 时,构建失败。rbenv 问题中也报告了这一点(https://github.com/rbenv/ruby-build/issues/1725)。
例如安装 ruby 2.6.8 时
# installing via ruby-install ( https://github.com/postmodern/ruby-install )
ruby-install ruby 2.6.8
Run Code Online (Sandbox Code Playgroud)
它会导致以下错误
ossl_x509store.c:452:30: note: ')' token is here
result = rb_funcall(ctx, rb_intern("verify"), 0);
^~~~~~~~~~~~~~~~~~~
../.././include/ruby/ruby.h:1826:56: note: expanded from macro 'rb_intern'
__extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
^
../.././include/ruby/ruby.h:2602:20: note: expanded from macro 'rb_funcall'
rb_funcallv(recv, mid, \
^~~
6 warnings generated.
linking shared-object openssl.bundle
installing default openssl libraries
make[2]: Leaving directory '/Users/xxxxx/src/ruby-2.6.8/ext/openssl'
make[2]: Entering directory '/Users/xxxxx/src/ruby-2.6.8/ext/ripper'
extracting ripper.y from ../.././parse.y
compiling compiler ripper.y …Run Code Online (Sandbox Code Playgroud) 我目前正在rvm我的开发机器上使用红宝石之间的切换(主要是1.9.x和1.8.7).然后我遇到了chruby发现"不挂钩cd"功能的吸引力.
可以chruby+ chgems替换rmv的gemset功能吗?
之前:
$ rvm 1.8.7
Run Code Online (Sandbox Code Playgroud)
将为我的旧导轨项目使用1.8.7宝石切换到ruby 1.8.7.和:
$ rvm 1.9.3
Run Code Online (Sandbox Code Playgroud)
将为我的新rails项目使用1.9.3宝石切换到ruby 1.9.3.
怎么能得到chruby和chgems?
我一直在尝试在EC2实例上部署我的rails应用程序。我已经采取的步骤是
本地:
我通过Gemfile和编写了所有的gem bundle install:
group :development do
gem 'capistrano'
gem 'capistrano3-puma'
gem 'capistrano-rails', require: false
gem 'capistrano-bundler', require: false
gem 'capistrano-chruby'
end
Run Code Online (Sandbox Code Playgroud)我编辑了我Capfile的要求模块
require "capistrano/setup"
require "capistrano/deploy"
require "capistrano/scm/git"
install_plugin Capistrano::SCM::Git
require "capistrano/chruby"
require "capistrano/bundler"
require "capistrano/rails/assets"
require "capistrano/rails/migrations"
require "capistrano/puma"
Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
Run Code Online (Sandbox Code Playgroud)我也进行了必要的更改config/deploy.rb,特别是
set :chruby_ruby, 'ruby-2.3.0'
Run Code Online (Sandbox Code Playgroud)在服务器/实例上:
已安装Chruby,并包括在/etc/profile.d/chruby.sh其中:
group :development do
gem 'capistrano'
gem 'capistrano3-puma'
gem 'capistrano-rails', require: false
gem 'capistrano-bundler', require: false
gem …Run Code Online (Sandbox Code Playgroud)注意:这个问题涉及如何让捆绑程序使用 chruby 和 .ruby-version 设置的 Ruby 版本?。
使用chruby我在 macOS 上安装了 Ruby 1.8.7:
$ ruby -v
ruby 1.8.7 (2013-06-27 patchlevel 374) [i686-darwin17.4.0]
Run Code Online (Sandbox Code Playgroud)
另外,我曾经gem update --system 1.8.30安装过特定版本的 RubyGems,希望它是兼容的。这看起来安装正确:
$ gem --version
1.8.30
Run Code Online (Sandbox Code Playgroud)
但是,我的 RubyGems 环境显示的 Ruby 版本不正确(2.5.0):
$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.8.30
- RUBY VERSION: 2.5.0 (2017-12-25 patchlevel 0) [x86_64-darwin17]
- INSTALLATION DIRECTORY: /Users/keithpitty/.gem/ruby/1.8.7
- RUBY EXECUTABLE: /usr/local/opt/ruby/bin/ruby
- EXECUTABLE DIRECTORY: /Users/keithpitty/.gem/ruby/1.8.7/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-17
- GEM PATHS: …Run Code Online (Sandbox Code Playgroud) 我正在设置一台新机器并尝试使用 chruby 安装 Ruby。我使用 ruby-install 来安装 ruby 2.3 和 2.1.2,因为我团队中的其他人都在运行这两个版本。
当我跑步时chruby我得到:
红宝石-2.1.2 红宝石-2.3.0
然后我运行:
chruby ruby-2.1.2
Run Code Online (Sandbox Code Playgroud)
和:
$ chruby
* ruby-2.1.2
ruby-2.3.0
$ ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin14.0]
Run Code Online (Sandbox Code Playgroud)
问题是,当我关闭终端并再次打开它时,默认的 Ruby 版本又回到 ruby-2.3.0。如何设置 chruby 的默认版本?
ruby-2.2.0有了chruby,为什么在工作中不会.ruby-version,而chruby ruby-2.2.0会呢?
% whoami
mark
% sudo su myapp
% cd /home/www/myapp/
% whoami
chruby: unknown Ruby: ruby-2.2.0
myapp
% cat .ruby-version
ruby-2.2.0
% which ruby
/usr/local/bin/ruby
% chruby ruby-2.2.0
% which ruby
/home/www/myapp/.rubies/ruby-2.2.0/bin/ruby
Run Code Online (Sandbox Code Playgroud)
Ruby on Rails 部署的完整记录:
OS X 10.9.4。我没有安装chruby自制软件。
我很想卸载chruby。因为我想再次进行全新安装。
我想我需要去那里 chruby 它。并运行make uninstall
我试图找到它在哪里:
? ~ whereis chruby
? ~ which chruby
chruby () {
case "$1" in
(-h|--help) echo "usage: chruby [RUBY|VERSION|system] [RUBY_OPTS]" ;;
(-V|--version) echo "chruby: $CHRUBY_VERSION" ;;
("") local dir star
for dir in "${RUBIES[@]}"
do
dir="${dir%%/}"
if [[ "$dir" = "$RUBY_ROOT" ]]
then
star="*"
else
star=" "
fi
echo " $star ${dir##*/}"
done ;;
(system) chruby_reset ;;
(*) local dir match
for dir in "${RUBIES[@]}" …Run Code Online (Sandbox Code Playgroud) 我使用Chruby ruby版本控件设置我的ruby默认值,但是当我尝试使用我的系统版本时,它会使用我的系统版本.我该如何解决?
~/workspace ??? ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin14]
~/workspace ??? ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin14]
~/workspace ??? rails new gitsee
Rails 5 requires Ruby 2.2.2 or newer.
You're running
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]
Please upgrade to Ruby 2.2.2 or newer to continue.
Run Code Online (Sandbox Code Playgroud) 我正在使用 source /usr/local/opt/chruby/share/chruby/auto.sh 将 ruby 自动更改为 .ruby-version 中的版本,但不幸的是,这只适用于 cd。
当我在我的 mac 终端中打开一个新选项卡时,它会打开我在上一个选项卡中所在的同一目录,但自动更改不起作用。我对此的解决方案是返回cd ..并cd返回,这会触发更改。显然,这很烦人。
我尝试chruby_auto在新选项卡中手动调用该函数,但这没有效果。
在这种情况下,有人可以提供如何更新我的 ruby 版本的解决方案吗?我更喜欢自动解决方案,但会满足于调用命令。
chruby ×11
ruby ×11
ruby-install ×2
rubygems ×2
rvm ×2
bash ×1
macos ×1
rbenv ×1
ruby-1.8.7 ×1
shell ×1