1.为什么在很多命令前要加上bundle exec
2.gemfile中指定版本
1.为什么在很多命令前要加上bundle exec
自己在执行命令的时候,一般都是rails db:migrate,发现和bundle exec rails db:migrate的执行效果差不多,但是经常还是会出现如下的问题:
You have already activated rake 10.3.1, but your Gemfile requires rake 10.1.0
执行rails db:migrate会出现如上的问题,而加了bundle exec则会解决,原因是加了bundle exec则是表明系统的gem安装要按照gemfile和gemfile.lock执行的版本安装和执行,而系统中其实gem有很多版本,可以通过gem install xx的形式安装,如果只是执行rails db:migrate,会触发最新安装的版本,与gemfile或者gemfile.lock中指定的版本冲突。
2.gemfile中指定版本
#精确到某个版本
gem 'uglifier', '1.3.0'
#大于或者等于该版本,即是始终安装最新版本
gem 'uglifier', '>= 1.3.0'
#只能安装补丁号,安装版本号大于4.0.0,但小于4.1 的coffee-rails。
gem 'coffee-rails', '~> 4.0.0'
网友评论