Ruby on rails RubyonRails 3.2.13-对Rails应用程序使用不同的Gemset
我目前有几个运行版本3.2.13的Rails应用程序使用Ruby 1.9.3。我计划最终将我当前的应用程序升级到Rails 4.0,然后将Ruby升级到2.0。我需要仔细计算转换到Ruby 2.0的时间,因为据我所知,Phusion Passenger只会处理一个版本的Ruby,而不会处理一些流鼻血的解决方案,我现在不打算尝试实现这些解决方案 我目前在所有Rails应用程序中使用一个gemset。我希望在某个时候将我的Rails应用程序从3.2.13一个一个地转换为Rails 4.0的当前版本。当我尝试将我的一个应用程序更新到更新版本的Rails时,我被告知必须执行更新Rails命令 我想做的是能够使用Rails 3.2.13运行我的一些应用程序,以及使用Rails 4.0运行其他应用程序,直到我确信它们都能在Rails 4.0下正常运行。一旦我这样做了,我将回顾Ruby 1.9.3(如果有的话)之间的差异,并将它们全部升级到Rails 2.0。在这一点上,我理解我只需要为2.0.0或Ruby 2的最新稳定版本创建gemset 我已经做了网络搜索并查看了RVM网站。我了解gemeset是如何分配给您想要运行的Ruby版本的。但是,我没有看到任何关于在同一台机器上使用相同版本Ruby的gems,而是在不同的应用程序上使用不同版本的Rails或其他gems组合的情况。这能做到吗Ruby on rails RubyonRails 3.2.13-对Rails应用程序使用不同的Gemset,ruby-on-rails,ruby,rvm,gemset,Ruby On Rails,Ruby,Rvm,Gemset,我目前有几个运行版本3.2.13的Rails应用程序使用Ruby 1.9.3。我计划最终将我当前的应用程序升级到Rails 4.0,然后将Ruby升级到2.0。我需要仔细计算转换到Ruby 2.0的时间,因为据我所知,Phusion Passenger只会处理一个版本的Ruby,而不会处理一些流鼻血的解决方案,我现在不打算尝试实现这些解决方案 我目前在所有Rails应用程序中使用一个gemset。我希望在某个时候将我的Rails应用程序从3.2.13一个一个地转换为Rails 4.0的当前版本。
任何帮助都将不胜感激。您的Gemfile.lock nails锁定您使用的每个gem的版本-您不必担心gemets
bundle install
将始终安装正确的版本,并且您的应用程序将始终使用Gemfile.lock中的版本,即使有其他版本在运行请仔细查看!)
首先,创建一个新的gemset,其名称与您的项目对应
示例:rvm gemset创建项目\u名称
然后在项目目录中创建/编辑.rvmrc文件:rvm use 1.9。3@project_name
一个陷阱是,如果执行以下命令
cd some_project
cd ../other_project
而另一个项目没有指定gemset,您将留在某个项目gemset中。为了避免这种情况,您可以在“projects”目录中创建带有默认gemset的.rvmrc文件(如果有)
它将显示使用示例gemset创建的gem集,并执行以下操作:
捆绑安装
将在示例gemset下安装该项目的所有特定gems,
您也可以为其他项目创建其他gem集,通过这种方式,您可以使用rvm为不同的项目维护不同的rails/gems和ruby版本。这篇文章准确地解释了您在第一个示例中所说的内容。这篇文章解释了如何为不同版本的rails创建不同的gemset,但没有解释如何确定每个应用程序使用哪个gemset。也许我遗漏了什么。我喜欢像你一样,用bundler来管理我的宝石,但这确实意味着,如果有多个版本的gems在运行,就必须使用
bundle exec
——值得一提。只是澄清一下:要更新我的一个应用程序以使用Rails 4.0,我所要做的就是在我的Gemfile中更改Rails版本并添加Ruby版本号,然后执行bundle exec?我想确保这将允许我在不同的应用程序中运行Rails 3.2.13和Rails 4.0。bundle install
/bundle update
更新您的bundle中的内容,否则是的。bundle exec用于从gems运行可执行文件时(例如bundle exec rails g migration Foo)bundle exec rails s
,bundle exec rake…
等。这是因为,否则,您不会在bundle的上下文中运行可执行文件,因此,它将使用您系统中最新的gem,并在它与您的gem文件不匹配时进行投诉。非常感谢您的解释。我目前没有在项目中使用.rvmrc。这也许可以解释我刚刚发现的其他东西。我的尝试是为所有Rails应用程序使用一个gemset,但在列出gemset之后,我发现我无意中创建了其他gemset。看来我的宝石已经失控了。我可以在这里尝试另一种选择。你也可以看看rbenv。就我个人而言,我有完全不同的方法,因为我所有的应用程序都是Ruby 1.9.3。我告诉bundler在project_dir/.gems中安装gems,所以对于每个项目,默认情况下我都有gem分离。但是你看它还不完整
Project Folder
|___Gemfile
|__.ruby-gemset
|__.ruby-version
Gemfile with all the required gems mention in your project folder
.ruby-gemset should have gem set name like sample-gemset
.ruby-version file should have specific ruby version (e.g 2.0)
rvm gemset list