如何与团队一起管理 gem 开发路径?
how to manage gem path in development with team?
我和我的团队在项目中遇到了问题,我想知道你们是如何处理这种情况的。
我们在同一个项目中工作,该项目有我们制作的 gem,我们也在处理那些 gem。
所以我们的 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
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"]
我尝试了很多不同的方法,使用许多 Whosebug 的帖子作为参考...但没有用。
我有 2 个解决方案供您选择:
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。使用 __dir__
.
Kernel.__dir__
returns 调用此方法的文件的绝对目录。这意味着,无论用户如何,我们始终可以获得基本目录。
假设Gemfile
位于/Users/person1/apps/my_app/Gemfile
。然后 __dir__
将 return /Users/person1/apps/my_app
.
gem "my_gem", '1.1', path: File.join(__dir__, '..', 'my_gem')
你也可以同意亲戚path-structure?你可以做类似
gem "my_gem", :path => '../../apps/my_gem/'
我个人总是使用 path
在本地针对 gem 进行开发,但我总是将 git 引用推送给我的同事(因为这也意味着我的代码正在开发 -- gem,已发布 -- 至少推送到 repo)。
gem "my_gem", git: 'git@github.com:username/my_gem.git'
并且在 Gemfile.lock
(我们也将其推送到存储库)中,我们看到了修订版,以便在同事安装或部署时我们获得相同的版本。
我和我的团队在项目中遇到了问题,我想知道你们是如何处理这种情况的。
我们在同一个项目中工作,该项目有我们制作的 gem,我们也在处理那些 gem。
所以我们的 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
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"]
我尝试了很多不同的方法,使用许多 Whosebug 的帖子作为参考...但没有用。
我有 2 个解决方案供您选择:
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。使用 __dir__
.
Kernel.__dir__
returns 调用此方法的文件的绝对目录。这意味着,无论用户如何,我们始终可以获得基本目录。
假设Gemfile
位于/Users/person1/apps/my_app/Gemfile
。然后 __dir__
将 return /Users/person1/apps/my_app
.
gem "my_gem", '1.1', path: File.join(__dir__, '..', 'my_gem')
你也可以同意亲戚path-structure?你可以做类似
gem "my_gem", :path => '../../apps/my_gem/'
我个人总是使用 path
在本地针对 gem 进行开发,但我总是将 git 引用推送给我的同事(因为这也意味着我的代码正在开发 -- gem,已发布 -- 至少推送到 repo)。
gem "my_gem", git: 'git@github.com:username/my_gem.git'
并且在 Gemfile.lock
(我们也将其推送到存储库)中,我们看到了修订版,以便在同事安装或部署时我们获得相同的版本。