0
votes

So I recently installed rack-pjax in my app to make it and so some sidebars wouldn't reload on navigation, and I got it working in development, but when I pushed it up to heroku, for some reason, it didn't work.

If I navigate to, say, "/music", it reloads the entire page, with the URL going from "/music" to "/music#" and back to "/music".

Edit {

In the heroku logs, you can see it sends the GET request twice, which explains the discrepancy in the URL. If the second GET request didn't happen, it should work.

}

Here's my log of me doing it in development:

J-Laptop:pregun joeshoulak$ rails s
WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.7.8
=> Booting Thin
=> Rails 3.2.13 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
>> Thin web server (v1.5.1 codename Straight Razor)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop


Started GET "/" for 127.0.0.1 at 2013-07-11 18:15:31 -0500
Processing by StaticPagesController#home as HTML
  Rendered static_pages/home.html.erb within layouts/application (15.1ms)
Compiled static_pages.js  (604ms)  (pid 33288)
Compiled application.js  (7ms)  (pid 33288)
  Rendered layouts/_header.html.erb (1115.5ms)
  Rendered layouts/_subscribe.html.erb (440.1ms)
  Rendered layouts/_soundcloud.html.erb (0.4ms)
  Rendered layouts/_tweet-stream.html.erb (0.4ms)
  Rendered layouts/_footer.html.erb (0.4ms)
  Rendered layouts/_google_analytics.html.erb (0.5ms)
Completed 200 OK in 1719ms (Views: 1718.8ms | ActiveRecord: 0.0ms)


Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /application.css - 304 Not Modified (11ms)


Started GET "/assets/jquery.fancybox.css?body=1" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /jquery.fancybox.css - 304 Not Modified (3ms)


Started GET "/assets/fancybox.css?body=1" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /fancybox.css - 304 Not Modified (4ms)


Started GET "/assets/email.css?body=1" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /email.css - 304 Not Modified (1ms)


Started GET "/assets/forms.css?body=1" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /forms.css - 304 Not Modified (1ms)


Started GET "/assets/static_pages.css?body=1" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /static_pages.css - 304 Not Modified (5ms)


Started GET "/assets/users.css?body=1" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /users.css - 304 Not Modified (3ms)


Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /jquery.js - 304 Not Modified (3ms)


Started GET "/assets/jquery.browser.js?body=1" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /jquery.browser.js - 304 Not Modified (2ms)


Started GET "/assets/jquery.fancybox.js?body=1" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /jquery.fancybox.js - 304 Not Modified (2ms)


Started GET "/assets/fancybox.js?body=1" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /fancybox.js - 304 Not Modified (4ms)


Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /jquery_ujs.js - 304 Not Modified (26ms)


Started GET "/assets/jquery.pjax.js?body=1" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /jquery.pjax.js - 304 Not Modified (1ms)


Started GET "/assets/email.js?body=1" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /email.js - 304 Not Modified (2ms)


Started GET "/assets/fonts.js?body=1" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /fonts.js - 304 Not Modified (1ms)


Started GET "/assets/static_pages.js?body=1" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /static_pages.js - 304 Not Modified (2ms)


Started GET "/assets/users.js?body=1" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /users.js - 304 Not Modified (2ms)


Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /application.js - 304 Not Modified (13ms)


Started GET "/assets/photos/small/on-stage.jpg" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /photos/small/on-stage.jpg - 304 Not Modified (18ms)


Started GET "/assets/photos/small/model.jpg" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /photos/small/model.jpg - 304 Not Modified (60ms)


Started GET "/assets/wood-tile.jpg" for 127.0.0.1 at 2013-07-11 18:15:33 -0500
Served asset /wood-tile.jpg - 304 Not Modified (21ms)


Started GET "/music?_pjax=%5Bdata-pjax-container%5D" for 127.0.0.1 at 2013-07-11 18:15:44 -0500
Processing by StaticPagesController#music as HTML
  Parameters: {"_pjax"=>"[data-pjax-container]"}
  Rendered static_pages/music.html.erb within layouts/application (1.0ms)
  Rendered layouts/_header.html.erb (58.6ms)
  Rendered layouts/_subscribe.html.erb (5.1ms)
  Rendered layouts/_soundcloud.html.erb (0.1ms)
  Rendered layouts/_tweet-stream.html.erb (0.1ms)
  Rendered layouts/_footer.html.erb (0.1ms)
  Rendered layouts/_google_analytics.html.erb (0.1ms)
Completed 200 OK in 194ms (Views: 193.9ms | ActiveRecord: 0.0ms)


Started GET "/assets/photos/small/on-stage.jpg" for 127.0.0.1 at 2013-07-11 18:15:44 -0500
Served asset /photos/small/on-stage.jpg - 304 Not Modified (0ms)


Started GET "/assets/photos/small/model.jpg" for 127.0.0.1 at 2013-07-11 18:15:44 -0500
Served asset /photos/small/model.jpg - 304 Not Modified (0ms)


Started GET "/assets/albums/accident.jpg" for 127.0.0.1 at 2013-07-11 18:15:44 -0500
Served asset /albums/accident.jpg - 304 Not Modified (29ms)


Started GET "/assets/albums/forever.jpg" for 127.0.0.1 at 2013-07-11 18:15:44 -0500
Served asset /albums/forever.jpg - 304 Not Modified (48ms)


Started GET "/assets/albums/green.jpg" for 127.0.0.1 at 2013-07-11 18:15:44 -0500
Served asset /albums/green.jpg - 304 Not Modified (1ms)


Started GET "/assets/albums/recluse.jpg" for 127.0.0.1 at 2013-07-11 18:15:44 -0500
Served asset /albums/recluse.jpg - 304 Not Modified (1ms)


Started GET "/assets/albums/gone.jpg" for 127.0.0.1 at 2013-07-11 18:15:44 -0500
Served asset /albums/gone.jpg - 304 Not Modified (43ms)

And here's my Heroku log when I try the same thing in production.

2013-07-11T23:18:51.945015+00:00 heroku[web.1]: Starting process with command `bundle exec thin start -R config.ru -e $RAILS_ENV -p 6327`
2013-07-11T23:18:58.952314+00:00 app[web.1]: WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.7.6
2013-07-11T23:18:59.160588+00:00 app[web.1]: DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/config/environment.rb:5)
2013-07-11T23:18:59.160588+00:00 app[web.1]: DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/config/environment.rb:5)
2013-07-11T23:19:03.265277+00:00 app[web.1]: Connecting to database specified by DATABASE_URL
2013-07-11T23:19:04.697633+00:00 app[web.1]: >> Maximum connections set to 1024
2013-07-11T23:19:04.697633+00:00 app[web.1]: >> Thin web server (v1.5.1 codename Straight Razor)
2013-07-11T23:19:04.697633+00:00 app[web.1]: >> Listening on 0.0.0.0:6327, CTRL+C to stop
2013-07-11T23:19:05.032735+00:00 heroku[web.1]: State changed from starting to up
2013-07-11T23:19:07.649643+00:00 app[web.1]: Started GET "/" for 65.103.31.9 at 2013-07-11 23:19:07 +0000
2013-07-11T23:19:07.751857+00:00 app[web.1]: Processing by StaticPagesController#home as HTML
2013-07-11T23:19:07.819355+00:00 app[web.1]:   Rendered layouts/_header.html.erb (2.5ms)
2013-07-11T23:19:07.810610+00:00 app[web.1]:   Rendered static_pages/home.html.erb within layouts/application (5.1ms)
2013-07-11T23:19:08.128110+00:00 heroku[router]: at=info method=GET path=/ host=www.prestongunderson.com fwd="65.103.31.9" dyno=web.1 connect=1ms service=439ms status=304 bytes=0
2013-07-11T23:19:08.079075+00:00 app[web.1]:   Rendered layouts/_tweet-stream.html.erb (0.2ms)
2013-07-11T23:19:08.078419+00:00 app[web.1]:   Rendered layouts/_soundcloud.html.erb (0.6ms)
2013-07-11T23:19:08.079684+00:00 app[web.1]:   Rendered layouts/_footer.html.erb (0.2ms)
2013-07-11T23:19:08.080610+00:00 app[web.1]: Completed 200 OK in 329ms (Views: 328.3ms | ActiveRecord: 0.0ms)
2013-07-11T23:19:08.077263+00:00 app[web.1]:   Rendered layouts/_subscribe.html.erb (257.2ms)
2013-07-11T23:19:08.080442+00:00 app[web.1]:   Rendered layouts/_google_analytics.html.erb (0.4ms)
2013-07-11T23:19:09.490768+00:00 heroku[router]: at=info method=GET path=/assets/application-e4de29223b008b9aab08de9e9baf133e.css host=www.prestongunderson.com fwd="65.103.31.9" dyno=web.1 connect=3ms service=8ms status=304 bytes=0
2013-07-11T23:19:10.865673+00:00 heroku[router]: at=info method=GET path=/assets/application-4502e11f3b6bc00a0e152e2b246a1548.js host=www.prestongunderson.com fwd="65.103.31.9" dyno=web.1 connect=1ms service=5ms status=304 bytes=0
2013-07-11T23:19:12.729769+00:00 heroku[router]: at=info method=GET path=/assets/photos/small/model.jpg host=www.prestongunderson.com fwd="65.103.31.9" dyno=web.1 connect=1ms service=583ms status=304 bytes=0
2013-07-11T23:19:12.731088+00:00 heroku[router]: at=info method=GET path=/assets/photos/small/on-stage.jpg host=www.prestongunderson.com fwd="65.103.31.9" dyno=web.1 connect=1ms service=592ms status=304 bytes=0
2013-07-11T23:19:13.259316+00:00 heroku[router]: at=info method=GET path=/assets/wood-tile.jpg host=www.prestongunderson.com fwd="65.103.31.9" dyno=web.1 connect=1ms service=8ms status=304 bytes=0
2013-07-11T23:19:27.016512+00:00 app[web.1]: Started GET "/music?_pjax=%5Bdata-pjax-container%5D" for 65.103.31.9 at 2013-07-11 23:19:27 +0000
2013-07-11T23:19:27.099811+00:00 app[web.1]: Processing by StaticPagesController#music as HTML
2013-07-11T23:19:27.114816+00:00 app[web.1]:   Rendered layouts/_subscribe.html.erb (2.5ms)
2013-07-11T23:19:27.112042+00:00 app[web.1]:   Rendered layouts/_header.html.erb (1.2ms)
2013-07-11T23:19:27.115623+00:00 app[web.1]:   Rendered layouts/_tweet-stream.html.erb (0.0ms)
2013-07-11T23:19:27.115386+00:00 app[web.1]:   Rendered layouts/_soundcloud.html.erb (0.0ms)
2013-07-11T23:19:27.110545+00:00 app[web.1]:   Rendered static_pages/music.html.erb within layouts/application (1.1ms)
2013-07-11T23:19:27.106652+00:00 app[web.1]:   Parameters: {"_pjax"=>"[data-pjax-container]"}
2013-07-11T23:19:27.141265+00:00 app[web.1]:   Rendered layouts/_google_analytics.html.erb (0.0ms)
2013-07-11T23:19:27.155659+00:00 heroku[router]: at=info method=GET path=/music?_pjax=%5Bdata-pjax-container%5D host=www.prestongunderson.com fwd="65.103.31.9" dyno=web.1 connect=1ms service=141ms status=200 bytes=1194
2013-07-11T23:19:27.141265+00:00 app[web.1]: Completed 200 OK in 32ms (Views: 31.0ms | ActiveRecord: 0.0ms)
2013-07-11T23:19:27.141265+00:00 app[web.1]:   Rendered layouts/_footer.html.erb (0.0ms)
2013-07-11T23:19:27.663407+00:00 app[web.1]: Processing by StaticPagesController#music as HTML
2013-07-11T23:19:27.660457+00:00 app[web.1]: Started GET "/music" for 65.103.31.9 at 2013-07-11 23:19:27 +0000
2013-07-11T23:19:27.678623+00:00 heroku[router]: at=info method=GET path=/music host=www.prestongunderson.com fwd="65.103.31.9" dyno=web.1 connect=1ms service=13ms status=304 bytes=0
2013-07-11T23:19:27.667604+00:00 app[web.1]:   Rendered layouts/_header.html.erb (1.8ms)
2013-07-11T23:19:27.669287+00:00 app[web.1]:   Rendered layouts/_soundcloud.html.erb (0.0ms)
2013-07-11T23:19:27.669121+00:00 app[web.1]:   Rendered layouts/_subscribe.html.erb (1.3ms)
2013-07-11T23:19:27.669450+00:00 app[web.1]:   Rendered layouts/_tweet-stream.html.erb (0.0ms)
2013-07-11T23:19:27.669992+00:00 app[web.1]: Completed 200 OK in 6ms (Views: 6.3ms | ActiveRecord: 0.0ms)
2013-07-11T23:19:27.665544+00:00 app[web.1]:   Rendered static_pages/music.html.erb within layouts/application (1.3ms)
2013-07-11T23:19:27.669773+00:00 app[web.1]:   Rendered layouts/_google_analytics.html.erb (0.0ms)
2013-07-11T23:19:27.669617+00:00 app[web.1]:   Rendered layouts/_footer.html.erb (0.0ms)
2013-07-11T23:19:29.241509+00:00 heroku[router]: at=info method=GET path=/assets/albums/forever.jpg host=www.prestongunderson.com fwd="65.103.31.9" dyno=web.1 connect=1ms service=4ms status=304 bytes=0
2013-07-11T23:19:30.839296+00:00 heroku[router]: at=info method=GET path=/assets/albums/green.jpg host=www.prestongunderson.com fwd="65.103.31.9" dyno=web.1 connect=2ms service=3ms status=304 bytes=0
2013-07-11T23:19:30.843345+00:00 heroku[router]: at=info method=GET path=/assets/albums/recluse.jpg host=www.prestongunderson.com fwd="65.103.31.9" dyno=web.1 connect=1ms service=3ms status=304 bytes=0
2013-07-11T23:19:30.853211+00:00 heroku[router]: at=info method=GET path=/assets/albums/gone.jpg host=www.prestongunderson.com fwd="65.103.31.9" dyno=web.1 connect=1ms service=3ms status=304 bytes=0
2013-07-11T23:19:29.237902+00:00 heroku[router]: at=info method=GET path=/assets/albums/accident.jpg host=www.prestongunderson.com fwd="65.103.31.9" dyno=web.1 connect=1ms service=4ms status=304 bytes=0

Here are the relevant files to pjax:

/config/application.rb:

require File.expand_path('../boot', __FILE__)
require 'rails/all'
if defined?(Bundler)
  Bundler.require(*Rails.groups(:assets => %w(development test)))
end

module Prestongunderson
  class Application < Rails::Application
    config.middleware.use Rack::Pjax
    config.encoding = "utf-8"
    config.filter_parameters += [:password]
    config.active_support.escape_html_entities_in_json = true

    config.active_record.whitelist_attributes = true
    config.assets.enabled = true
    config.assets.version = '1.0'
  end
end

/assets/javascripts/application.js //= require jquery //= require fancybox //= require jquery_ujs //= require jquery.pjax //= require_tree .

/assets/javascripts/static_pages.js.coffee

$(document).ready ->
    jQuery ->
    $("a.fancybox").fancybox()
    jQuery ->
    $(document).pjax('a.local-nav', '[data-pjax-container]')

/app/views/layouts/application.html.erb

<!DOCTYPE html>
<html>
    <%= render 'layouts/header' %>
    <%= render 'layouts/subscribe' %>
    <%= render 'layouts/soundcloud' %>
    <%= render 'layouts/tweet-stream' %>

    <body>

        <div data-pjax-container>
          <%= yield %>
        </div>

        <%= render 'layouts/footer' %>
        <%= render 'layouts/google_analytics' %>
    </body>
</html>

/app/views/layouts/_header.html.erb

<head>
    <% @title = yield(:title) %>
    <title>Preston Gunderson | <%= @title %></title>
    <%= stylesheet_link_tag     'http://fonts.googleapis.com/css?family=Fauna+One|Mr+Bedfort|Milonga' %>
    <%= stylesheet_link_tag     'application', :media => 'all' %>
    <%= javascript_include_tag  'application' %>
    <%= csrf_meta_tags %>
</head>

<% if flash[:notice] %>
    <div class='alert'><%= flash[:notice] %></div>
        <style>
            #subscribe, #soundcloud {
                top: 60px;
            }
            #tweet-stream {
                top: 200px;
            }
        </style>
<% end %>
<nav class='center border'> 
    <ul>
        <% ['Home', 'Bio', 'Gallery', 'Music', 'Tour', 'Videos', 'Contact'].each do |page| %>
            <li><%= link_to( page.upcase, "/#{page.downcase}", class: 'local-nav') %></li>
        <% end %>
        <li><%= link_to( 'MERCH', 'https://prestongunderson.bigcartel.com') %></li>
    </ul>
</nav>
<header class='center border' id='head-box'>
    <p id='supertitle'>The official site of Singer Songwriter</p>
    <h1>Preston Gunderson</h1>
</header>

/gemfile

source 'https://rubygems.org'

gem 'rails', '3.2.13'
gem 'bootstrap-sass', '2.1'
gem 'simple_form'
gem 'rspec'
gem 'pg'
gem 'jquery-rails'
gem 'fancybox-rails'
gem 'thin'
gem 'rack-pjax'

group :development, :test do 
  gem 'sqlite3'
end

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end
1
Did you solve this @JShoe?MBHNYC
No not really. I got it working, but I don't know how.JShoe
I fixed it myself fiddling with the javascript targets, works great.MBHNYC

1 Answers

1
votes

Before you call pjax, try adding this to your JavaScript:

$(document).on('pjax:timeout', function() {
    return false;
});

This will disable the timeout. I had this exact same problem and the issue was that my app was too slow, and was taking too long to load, and pjax would cancel the request and send the browser on. You can of course increase the timeout but I thought this was nicer.