[LRUG] Rake binstub

Andrew Stewart boss at airbladesoftware.com
Wed Oct 8 06:00:57 PDT 2014


Hello!

For a long time I have had on my server a cronjob which runs a rake task:

    42 * * * * RAILS_ENV=production cd /path/to/my/app && bundle exec rake blah

Recently I decided to get with the program and use a binstub instead:

    42 * * * * RAILS_ENV=production /path/to/my/app/bin/rake blah

But it fails with: "rake aborted! No Rakefile found".  Naturally there is a Rakefile at /path/to/my/app.

My rake binstub is the one that comes with Rails 4:

   https://github.com/rails/rails/commit/009873aec89a4b843b41accf616b42b7a9917ba8#diff-15

– not the one that Bundler would generate:

    #!/usr/bin/env ruby
    #
    # This file was generated by Bundler.
    #
    # The application 'rake' is installed as part of a gem, and
    # this file is here to facilitate running it.
    #
    
    require 'pathname'
    ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
      Pathname.new(__FILE__).realpath)
    
    require 'rubygems'
    require 'bundler/setup'
    
    load Gem.bin_path('rake', 'rake')

After doing some research on this I learned it's controversial, a surprise for Rails ;)

Now that the dust has settled, what's the generally recommended approach?  Keep the Rails-generated binstub for rake, and cronjobs that cd into the app directory, or go for a bundler-generated binstub (which presumably works from anywhere)?

Thanks in advance,

Andy Stewart


More information about the Chat mailing list