簡體   English   中英

為什么Rails Composer在構建應用程序時會更新Rails?

[英]Why does the Rails Composer update Rails when it builds an app?

# I run these commands:
$ rvm current
ruby-2.3.3@rails500
$ gem list | grep '^rails '
rails (5.0.1, 5.0.0)
$ gem uninstall rails -v 5.0.1
Successfully uninstalled rails-5.0.1
$ gem uninstall railties -v 5.0.1
Successfully uninstalled railties-5.0.1
$ gem list | grep railties
railties (5.0.0)
$ rails -v
Rails 5.0.0
$ rails new . -m \
https://raw.github.com/RailsApps/rails-composer/master/composer.rb
# After I answer all the prompts, a Gemfile is created, which requires
# rails '~> 5.0.1'. After running to completion, Rails Composer leaves
# me with Rails 5.0.1:
$ rails -v
Rails 5.0.1

我沒有明確要求Rails 5.0.1。 那我為什么要得到它? 它似乎會干擾Rails Composer。 參見https://github.com/RailsApps/rails-composer/issues/261https://github.com/RailsApps/rails-composer/issues/260

您已經觀察到Rails new命令的行為。 Rails Composer是一個Rails應用程序模板,並在Rails new成器上搭載。 Rails new命令生成一個簡單的默認Rails應用程序,然后Rails Composer對其進行修改。 Rails new命令生成的Gemfile包含gem'rails gem 'rails', '~> 5.0.0' 注意~> 5.0.0指定的“悲觀版本控制”。 這意味着使用大於5.0.0且小於5.1的任何版本(可以使用任何補丁程序版本)。 Rails new成器運行時,它將使用簡單的默認Rails應用程序提供的Gemfile更新gem,包括Rails gem。 因此,在Rails Composer運行之前,已安裝Rails 5.0.1 gem。

您可以通過在沒有Rails Composer應用程序模板的情況下運行Rails new命令來觀察此行為。

myapp/2.4.0@rails500 $ rvm current ruby-2.4.0@rails500 myapp/2.4.0@rails500 $ gem list | grep '^rails ' rails (5.0.0) myapp/2.4.0@rails500 $ rails -v Rails 5.0.0 myapp/2.4.0@rails500 $ rails new . . . . run bundle install . . . Installing rails 5.0.1 . . . myapp/2.4.0@rails500 $ rails -v Rails 5.0.1

總之,您遇到的問題是Rails new命令,而不是Rails Composer。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM