有人可以解釋以下命令之間的區別嗎?耙子和箱子/耙子之間的區別
rake assets:precompile
bin/rake assets:precompile
RAILS_ENV=production rake assets:precompile
RAILS_ENV=production bin/rake assets:precompile
有人可以解釋以下命令之間的區別嗎?耙子和箱子/耙子之間的區別
rake assets:precompile
bin/rake assets:precompile
RAILS_ENV=production rake assets:precompile
RAILS_ENV=production bin/rake assets:precompile
rake
和bin/rake
Rake是您在計算機上安裝的程序。要在終端中使用它,請使用rake do:something
。使用直接rake
意味着已創建一個快捷方式,別名是「當我輸入rake
我想要使用位於[...]中的程序」。
bin/rake
樣式不使用創建的別名,而是使用程序的路徑。通常程序的執行者(不是程序的內容,只是啓動程序)位於文件夾/bin/
。要確定一個特定的程序的完整路徑,使用which
:
[yoshiji:~] $ which rake
/home/yoshiji/.rvm/gems/[email protected]/bin/rake
[yoshiji:~] $ which ls
/bin/ls
RAILS_ENV=production rake do:something
這RAILS_ENV
部分是在這裏指定一個環境中運行的rake
命令時的Rails應加載。默認情況下,環境爲development
。
總結:
rake assets:precompile
:使用別名/快捷方式rake
/bin/rake assets:precompile
:使用完整路徑rake
程序RAILS_ENV=production rake assets:precompile
:指定Rails的加載production
執行rake任務時的環境assets:precompile
rake
和bin/rake
都是可執行的Ruby文件,用於引導Rake gem。 rake
是您的環境對Rake gem的默認調用,並且在安裝Rake時由RubyGems創建。它應該有地方住在PATH:
[jkrause:~] $ which rake
/usr/bin/rake
或者,如果您使用的版本管理,如RVM(你應該是):
[jkrause:~] $ which rake
/Users/jkrause/.rvm/rubies/ruby-2.2.0/bin/rake
bin/rake
,而另一方面,由創建Rails在創建一個新的Rails應用程序,住位於你的Rails應用程序的根目錄bin
裏面:
[jkrause:~] $ ls -la ~/src/my_rails_app/bin/rake
-rwxr-xr-x 1 jkrause staff 164 Jan 5 14:11 bin/rake
在老版本的鐵軌(3.x和老呃),bin/rake
不存在,所以標準做法是調用RubyGems安裝的默認rake
。使用Rails 4.x,您需要調用bin/rake
,因爲Rails需要在Rake調用之前更改環境並加載一些輔助的寶石。誠實地說,我仍然不時地執行rake
,並且我從來沒有看到過任何突破,但是自從Rails指南明確表明,開始使用bin/rake
可能是個好主意。
最後,RAILS_ENV
用於設置rake
或bin/rake
的特定執行應使用的Rails環境(開發,測試或生產)。
明確運行bin中的rake。一個沒有。其中兩個將環境設置爲生產,另外兩個不(例如,使用默認值,開發)。 – 2014-09-04 14:36:12
「以二進制運行rake」是什麼意思? – ahnbizcad 2014-09-04 14:49:24
什麼都沒有;我說「在垃圾桶裏運行耙子」。 'bin'是(假定是)當前目錄中的一個子目錄。對'bin/rake'的調用顯式運行'bin'目錄中包含的rake命令。調用'rake'可以在任何地方或任何地方運行rake命令。 – 2014-09-04 14:55:11