可以使用用户配置默认的gem安装目录吗?

时间:2017-11-29 22:35:45

标签: origen-sdk

origen docs中,它表示宝石已安装在用户的主目录中。可以由每个用户配置吗?

  • 编辑*

我在应用程序的根目录中放置了origen_site_config.yml文件的副本,并启用了以下行:

# Define where a typical user's home directory will be, with a hidden directory for Origen.
home_dir: /users/thisuser/origen

我希望这可以工作并开始在/users/thisuser/origen/.origen安装,但事实并非如此。我删除了.bundle和lbin目录,并没有在安装目录中进行任何更改。

THX

3 个答案:

答案 0 :(得分:1)

这个问题促使PR和一些new documentation如何更改Origen内宝石的安装目录。

答案 1 :(得分:0)

我从未尝试过,但您应该可以使用site_config覆盖安装。

答案 2 :(得分:0)

Ruby / Bundler默认将gem安装到Ruby安装目录中。

但是,由于在公司工程计算环境中,用户共享他们没有写入权限的常见Ruby安装是常见的,因此Origen提供了默认的Bundler配置,而不是为用户安装宝石。 ; s主目录。

此安装位置由Origen Site Configgem_install_dir属性定义。

这可以在主站点配置中的公司级别上覆盖,但这是(当前至少)一个静态变量,因此使其特定于用户的唯一方法是引用$HOME或类似的Linux在给定环境中使用的级别变量。

可以让所有用户共享一个gem安装目录,但是缺点是所有用户都需要具有写访问权限,因此一个用户可能会对gem源进行黑客攻击可能会导致很难发现影响整个公司的错误。

最好是,如果你不想用gem文件填满你的主目录,就要覆盖每个用户。

以下是各种方法:

1)可以通过设置名为ORIGEN_<uppercased variable name>的环境变量来覆盖任何站点配置变量,在这种情况下为ORIGEN_GEM_INSTALL_DIR

2)符号链接$HOME/.origen到其他地方。

3)用户可以使用自己的站点配置文件。 See the guide了解更多细节,但是Origen将在多个地方搜索配置,并且在配置中定义的参数最接近应用程序所在的位置将覆盖更远的默认值。例如,假设用户将所有Origen工作区保留在/my_projects/origen/中,例如/my_projects/origen/my_app/my_projects/origen/origen_site_config.yml中定义的任何配置属性都会覆盖公司级别设置的属性。

Bundler将基于每个工作区缓存此配置,因此,只要您对此类配置进行更改,建议您从新工作区开始,或运行fix_my_workspace脚本。