title: RVM + Nginx + Passenger in Chef
body: <p>I'm trying to setup Nginx with Passenger on RVM in Chef using community cookbook for nginx and fnichol's for RVM. Everything on ubuntu.</p>
  
  <p>Now, my problem is that if I bootstrap the machine using knife ec2 and try to install everything in one go, it fails. </p>
  
  <p>For the most part it works well, picking up RVM and Passenger nicely, until the point when it realizes Passenger is not compiled, tries to do it using rake from default ruby 1.9.1 and fails.</p>
  
  <p>If I then connect to the machine and run <code>sudo chef-client</code>, everything finishes beautifully and I have correctly configured machine. Why doesn't it work on the first run?
  What setting/path element/environment variable am I missing during the first run?</p>
  
  <p>My recipe is very straightforward:</p>
  
  <pre><code>include_recipe "chef_gem"
  include_recipe "rvm::system"
  include_recipe "rvm::gem_package"
  
  group "rvm" do
    action :modify
    members "ubuntu"
    append true
  end
  
  include_recipe "nginx::source"
  </code></pre>
  
  <p>My attributes a little bit less so:</p>
  
  <pre><code># rvm                                                                                                                                                                                                                                                                         
  normal['rvm']['rubies'] = ['2.1.0']
  normal['rvm']['default_ruby'] = node['rvm']['rubies'].first
  normal['rvm']['user_default_ruby'] = node['rvm']['rubies'].first
  normal['rvm']['gems'][node['rvm']['default_ruby']] = [{name: "bundler"}, {name: "rake"}]
  
  # nginx                                                                                                                                                                                                                                                                       
  normal['nginx']['version'] = '1.4.5'
  normal['nginx']['dir'] = '/etc/nginx'
  normal['nginx']['log_dir'] = '/var/log/nginx'
  normal['nginx']['binary'] = "/opt/nginx-#{node['nginx']['version']}/sbin"
  normal['nginx']['source']['sbin_path'] = "#{node['nginx']['binary']}/nginx"
  normal['nginx']['init_style'] = 'init'
  normal['nginx']['default_site_enabled'] = false
  normal['nginx']['source']['version'] = node['nginx']['version']
  normal['nginx']['source']['modules'] = ["nginx::http_stub_status_module",
                                          "nginx::http_ssl_module",
                                          "nginx::http_gzip_static_module",
                                          "nginx::passenger"]
  normal['nginx']['source']['prefix'] = "/opt/nginx-#{node['nginx']['source']['version']}"
  normal['nginx']['source']['default_configure_flags'] = ["--prefix=#{node['nginx']['source']['prefix']}",
                                                          "--conf-path=#{node['nginx']['dir']}/nginx.conf",
                                                          "--sbin-path=#{node['nginx']['source']['sbin_path']}"]
  normal['nginx']['source']['url'] = "http://nginx.org/download/nginx-#{node['nginx']['source']['version']}.tar.gz"
  
  # passenger                                                                                                                                                                                                                                                                   
  normal['nginx']['passenger']['version'] = '4.0.37'
  normal['nginx']['passenger']['ruby'] = "#{node['rvm']['root_path']}/wrappers/ruby-#{node['rvm']['default_ruby']}/ruby"
  normal['nginx']['passenger']['gem_binary'] = "#{node['rvm']['root_path']}/wrappers/ruby-#{node['rvm']['default_ruby']}/gem"
  normal['nginx']['passenger']['root'] = "#{node['rvm']['root_path']}/gems/ruby-#{node['rvm']['default_ruby']}/gems/passenger-#{node['nginx']['passenger']['version']}"
  normal['nginx']['configure_flags'] = ["--add-module=#{node['rvm']['root_path']}/gems/ruby-#{node['rvm']['default_ruby']}/gems/passenger-#{node['nginx']['passenger']['version']}/ext/nginx"]
  </code></pre>
  
  <p>Problematic part:</p>
  
  <pre><code>*** The Phusion Passenger support files are not yet compiled. Compiling them for you... ***
  *** Running 'rake nginx CACHING=false' in /usr/local/rvm/gems/ruby-2.1.0/gems/passenger-4.0.37/ext/nginx... ***
  STDERR: /usr/lib/ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find rake (&gt;= 0) amongst [] (Gem::LoadError)
      from /usr/lib/ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
      from /usr/lib/ruby/1.9.1/rubygems.rb:1231:in `gem'
      from /opt/chef/embedded/bin/rake:22:in `&lt;main&gt;'
  ---- End output of "bash"  "/tmp/chef-script20140306-1255-1fqdatt" ----
  Ran "bash"  "/tmp/chef-script20140306-1255-1fqdatt" returned 1
  [2014-03-06T11:42:13+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
  </code></pre>
  
  <p>The command that leads to the above is:</p>
  
  <pre><code>cd nginx-1.4.5 &amp;&amp; ./configure --prefix=/opt/nginx-1.4.5 --conf-path=/etc/nginx/nginx.conf --sbin-path=/opt/nginx-1.4.5/sbin/nginx --add-module=/usr/local/rvm/gems/ruby-2.1.0/gems/passenger-4.0.37/ext/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module &amp;&amp; make &amp;&amp; make install`
  </code></pre>
  
  <p>I've found many guides to configuring Nginx with Passenger and RVM, none of them complete.
  Please help</p>