Ruby 开发gem时,我是否必须在更新后继续安装?
我正在文件夹中制作宝石:Ruby 开发gem时,我是否必须在更新后继续安装?,ruby,gem,Ruby,Gem,我正在文件夹中制作宝石: /Users/me/projects/ruby/gems/mygamename/ 其布局如下: /Users/me/projects/ruby/gems/mygamename/mygamename.gemspec /Users/me/projects/ruby/gems/mygamename/mygemname.rb /Users/me/projects/ruby/gems/mygamename/lib/mygemname/file1.rb /Users/me/pro
/Users/me/projects/ruby/gems/mygamename/
其布局如下:
/Users/me/projects/ruby/gems/mygamename/mygamename.gemspec
/Users/me/projects/ruby/gems/mygamename/mygemname.rb
/Users/me/projects/ruby/gems/mygamename/lib/mygemname/file1.rb
/Users/me/projects/ruby/gems/mygamename/lib/mygemname/file2.rb
现在在我的另一个ruby项目中,我想在我的Gemfile中引用这个gem,所以我做了:
gem 'mygemname', :path => "/Users/me/projects/ruby/gems/mygamename"
我知道我应该为我的gem编写测试来测试功能,但我很好奇我是否也可以从我的另一个ruby项目(我在gem文件中引用它)中进行集成测试
再一次,我将在gem本身编写测试,但我想知道,如果我想这样做,我怎么能这样做。gem类/模块被缓存,因此每次更改gem文件时,你都必须重新启动应用程序。
此外,如果您不更新gempec中的gem版本,则不必重新绑定。如果您更新gem版本,则可能需要执行
bundle update gemname
您将只需运行bundle install
一次。Bundler不会缓存或打包您的gem,它直接指向您的文件夹
重启规则与主应用中的相同。如果您对视图、资源或自动加载的ruby文件进行更改,它们将自动重新加载。但是,如果您需要应用程序中的某些lib文件并对其进行了更改,则必须重新启动应用程序。默认情况下,Bundler将需要gem“mygemname”的“lib/mygemname.rb”,因此此文件将不可重新加载。开发gem时,我通常会在目录中创建gem文件并从那里开始工作。在gem文件中,我使用:path选项添加对gem的引用
gem 'mygemname', :path => '/path/to/my/gem'
然后我运行bundle安装。这样我就不必一直重新安装我的gem了
请记住,在运行my gem时需要使用bundle exec。在gem中抛出一个
raise
,看看它是否在不重新绑定的情况下爆炸:)
。(虽然不需要重新绑定,但可能需要重新启动应用。)似乎不起作用?我确实提出了“hello”
,但什么也没发生。事实上,即使重新创建gem也没用,看起来我必须更改版本。