Ruby on rails 如何与团队一起管理开发中的gem路径?
我和我的团队在一个项目中遇到了一个问题,我想知道你是如何处理这种情况的 我们在同一个项目中工作,项目中有我们制作的宝石,我们也在制作这些宝石 因此,我们的GEM文件如下所示:Ruby on rails 如何与团队一起管理开发中的gem路径?,ruby-on-rails,ruby,environment-variables,gemfile,Ruby On Rails,Ruby,Environment Variables,Gemfile,我和我的团队在一个项目中遇到了一个问题,我想知道你是如何处理这种情况的 我们在同一个项目中工作,项目中有我们制作的宝石,我们也在制作这些宝石 因此,我们的GEM文件如下所示: # Person 1 gem "my_gem", '1.1', :path => '/Users/person1/apps/my_gem/' # Person 2 gem "my_gem", '1.1', :path => '/Users/person2/apps/my_gem/' # Person 3 g
# Person 1
gem "my_gem", '1.1', :path => '/Users/person1/apps/my_gem/'
# Person 2
gem "my_gem", '1.1', :path => '/Users/person2/apps/my_gem/'
# Person 3
gem "my_gem", '1.1', :path => '/Users/person3/apps/my_gem/'
问题是,当我们用Git推到遥控器时,每次都会发生冲突(听起来很合乎逻辑)。我尝试在dotenv gem中使用环境变量,具体操作如下:
# Person x
gem "my_gem", '1.1', :path => ENV["MY_PATH"]
我尝试了很多不同的方法,以stackoverflow的帖子作为参考。。。但不起作用。我有两种解决方案: 1.每个gem都有自己的git存储库。 您可以为每个gem提供一个单独的git存储库,您的
Gemfile
将如下所示:
# Assuming private Github
# and your private keys are setup correctly on Github.
gem 'my_gem', '1.1', git: 'git@github.com:username/my_gem.git'
2.使用\uuuu dir\uuuu
。
返回调用此方法的文件的绝对目录。这意味着,无论用户是谁,我们都可以得到基本目录
假设Gemfile
位于/Users/person1/apps/my_app/Gemfile
。然后\uuuu dir\uuuu
将返回/Users/person1/apps/my\u app
gem "my_gem", '1.1', path: File.join(__dir__, '..', 'my_gem')
我为您提供了两种解决方案: 1.每个gem都有自己的git存储库。 您可以为每个gem提供一个单独的git存储库,您的
Gemfile
将如下所示:
# Assuming private Github
# and your private keys are setup correctly on Github.
gem 'my_gem', '1.1', git: 'git@github.com:username/my_gem.git'
2.使用\uuuu dir\uuuu
。
返回调用此方法的文件的绝对目录。这意味着,无论用户是谁,我们都可以得到基本目录
假设Gemfile
位于/Users/person1/apps/my_app/Gemfile
。然后\uuuu dir\uuuu
将返回/Users/person1/apps/my\u app
gem "my_gem", '1.1', path: File.join(__dir__, '..', 'my_gem')
你也可以就相对路径结构达成一致?你可以这样做
gem "my_gem", :path => '../../apps/my_gem/'
就我个人而言,我总是使用路径
在本地针对gem进行开发,但我总是将git引用推送到我的同事那里(因为这也意味着我针对gem开发的代码被发布了——至少推送到了repo)
在
Gemfile.lock
(我们也将其推送到存储库)中,我们可以看到修订版,以便在同事安装或部署时获得相同的版本。您还可以就相对路径结构达成一致吗?你可以这样做
gem "my_gem", :path => '../../apps/my_gem/'
就我个人而言,我总是使用路径
在本地针对gem进行开发,但我总是将git引用推送到我的同事那里(因为这也意味着我针对gem开发的代码被发布了——至少推送到了repo)
在
Gemfile.lock
(我们也将其推送到存储库)中,我们可以看到修订版,这样当同事安装或部署时,我们可以得到相同的版本。为什么ENV
方法不起作用?我想如果我们通过终端设置ENVs,它会很好地工作,这就是我们的计划b。我尝试使用dotenv gem,但结果不好,gemfile是在加载dotenv之前读取的,因此无法识别.env文件。为什么env
方法不起作用?我认为如果我们通过终端设置env,效果会很好,这就是我们的计划b。我尝试使用dotenv gem,但结果不好,gemfile在加载dotenv之前已经读取,所以无法识别.env文件。谢谢!第一个看起来不错,但我更喜欢第二个,所以我会尽快尝试,我会告诉你它是如何运行的。根据@nathanvda的解决方案,我刚刚测试了相对路径。谢谢Aaron!第一个看起来不错,但我更喜欢第二个,所以我会尽快尝试,我会告诉你如何按照@nathanvda的解决方案,我刚刚测试了相对路径的工作原理。谢谢@nathanvda,最后我们决定使用相对路径,它很有魅力:)。谢谢@nathanvda,最后,我们决定使用相对路径,它可以作为一个符咒:)。