耙子和耙子/耙子之间的区别

时间:2014-09-04 14:33:36

标签: ruby-on-rails assets precompile

有人可以解释以下命令之间的区别吗?

rake assets:precompile

bin/rake assets:precompile

RAILS_ENV=production rake assets:precompile

RAILS_ENV=production bin/rake assets:precompile

2 个答案:

答案 0 :(得分:4)

rakebin/rake都是可执行的Ruby文件,用于引导Rake gem。 rake是您的环境对Rake gem的默认调用,并且是在安装Rake时由RubyGems创建的。它应该存在于你的路径中的某个地方:

[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

在旧版本的Rails(3.x及更早版本)中,bin/rake不存在,因此标准做法是调用RubyGems安装的默认rake。使用Rails 4.x,您需要调用bin/rake,因为Rails需要在Rake调用之前改变环境并加载一些辅助gem。说实话,我仍然不时地执行rake习惯,我从未见过任何破坏,但是自从Rails指南明确表明这一点后,开始使用bin/rake可能是一个好主意。

最后,RAILS_ENV用于设置rakebin/rake的特定执行应使用的Rails环境(开发,测试或生产)。

答案 1 :(得分:2)

  • rakebin/rake

Rake是您在计算机上安装的程序。要在终端中使用它,请使用rake do:something。直接使用rake表示已创建快捷方式,别名为“当我键入rake时,我想使用[...]中的程序。”

bin/rake样式不使用创建的别名,而是使用程序的路径。通常程序的执行者(不是程序的内容,只是启动程序)位于文件夹/bin/中。要确定特定计划的完整路径,请使用which

[yoshiji:~] $ which rake
/home/yoshiji/.rvm/gems/ruby-1.9.3-head@yourproject/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在执行rake任务时加载production环境assets:precompile