确定红宝石的位置

问题描述 投票:0回答:4

如何确定红宝石的位置?

ruby ruby-on-rails-3 rubygems
4个回答
65
投票

你可以试试

gem which rails

获取特定宝石的位置,或者

echo $GEM_HOME

获取您的宝石的主目录


60
投票
gem environment

...应该为您提供所需的所有信息。


13
投票

使用 budler,您可以做到:

bundle info <gem>

结果:

  * pg (1.4.5)
        Summary: Pg is the Ruby interface to the PostgreSQL RDBMS
        Homepage: https://github.com/ged/ruby-pg
        Path: /home/user/.rvm/gems/ruby-3.1.3/gems/pg-1.4.5

参考:https://bundler.io/v2.4/man/bundle-info.1.html


0
投票

简单的解决方案是:

gem environment

但是,它显示了一个很大的输出,其中包含许多我们不希望看到的信息,例如

RUBYGEMS VERSION
,
RUBY VERSION
,
INSTALLATION DIRECTORY
,
USER INSTALLATION DIRECTORY
,
RUBY EXECUTABLE
,
GIT EXECUTABLE
,
EXECUTABLE DIRECTORY
,
 SPEC CACHE DIRECTORY
SYSTEM CONFIGURATION DIRECTORY
RUBYGEMS PLATFORMS
GEM CONFIGURATION
REMOTE SOURCES
SHELL PATH

我们只想要

GEM PATH

我有一个解决方案,使用

grep
+
awk

gem environment | grep -A 1 "GEM PATHS:" | awk 'NR==2 { sub(/^[[:space:]]+- /, ""); print }'

解释💡

  1. gem environment
    :此命令用于显示有关 RubyGems 环境的信息,包括有关 gem 安装、路径和配置的详细信息。

  2. grep -A 1 "GEM PATHS:"
    :这部分命令用于在
    gem environment
    的输出中搜索包含“GEM PATHS:”的行,并在输出中包含其后面的行 (
    -A 1
    )。换句话说,它提取带有“GEM PATHS:”的行以及紧接其下方的行。

  3. awk 'NR==2 { sub(/^[[:space:]]+- /, ""); print }'
    :

    • awk
      :这是一个功能强大的文本处理工具,可以让您逐行操作和处理文本文件。

    • 'NR==2'
      :这是一个 AWK 条件,指定仅对第二行输入(“GEM PATHS:”下面的行)执行以下操作。

    • { sub(/^[[:space:]]+- /, ""); print }
      :

      • sub(/^[[:space:]]+- /, "")
        :此 AWK 函数 (
        sub
        ) 用于将一个模式替换为另一个模式。在本例中,它用于删除行中的前导空格和连字符 (
        ^[[:space:]]+- 
        )。
      • print
        :该命令用于将修改后的行打印到标准输出。

因此,总而言之,该命令从

gem environment
输出中提取“GEM PATHS:”下面的行,删除该行的前导空格和连字符,然后打印生成的文件路径。

© www.soinside.com 2019 - 2024. All rights reserved.