Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 开发gem时,我是否必须在更新后继续安装?_Ruby_Gem - Fatal编程技术网

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进行更新,是否必须重新运行bundle?或者它会一直从该文件夹中读取内容并拾取更改

  • 关于如何从我的另一个ruby项目中测试它,还有其他建议吗


  • 再一次,我将在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也没用,看起来我必须更改版本。