5

Ich möchte private Pub Juwel in meiner Rails-Anwendung verwenden. Ich Umsetzung mit Railscast 316PrivatePub ist nicht definiert Fehler Rails 3.2 private Kneipe

Nach rails g private_pub:install

meine private_pub.yml Datei:

development: 
    server: "http://0.0.0.0:9292/faye" 
    secret_token: "secret" 
test: 
    server: "http://0.0.0.0:9292/faye" 
    secret_token: "secret" 
production: 
    server: "http://0.0.0.0/faye" 
    secret_token: "98ec77eb7077c9899dc53f003abc4d6a0170512a57feab126ed5a32b114e3613" 
    signature_expiration: 3600 # one hour 

meine private_pub.ru Datei

# Run with: rackup private_pub.ru -s thin -E production 
    require "bundler/setup" 
    require "yaml" 
    require "faye" 
    require "private_pub" 

    Faye::WebSocket.load_adapter('thin') 

    PrivatePub.load_config(File.expand_path("../config/private_pub.yml", __FILE__), ENV["RAILS_ENV"] || "development") 
    run PrivatePub.faye_app 

Faye::Logging.log_level = :debug 
Faye.logger = lambda { |m| puts m } 

meine Indexdatei

<h1>Chat</h1> 

<ul id="chat"> 
    <%= render @mesajlar %> 
</ul> 

<%= form_for Mesaj.new, remote: true do |f| %> 
    <%= f.text_field :icerik %> 
    <%= f.submit "Send" %> 
<% end %> 

<%= subscribe_to "/mesajlar/new" %> 

Controller-Datei:

def create 
params[:mesaj][:gonderen_id]= current_kullanici.id 
@mesaj = Mesaj.create!(params[:mesaj]) 
PrivatePub.publish_to("/mesajlar/new", "alert('#{@mesaj.icerik}');") 
end 

I //= require private_pub Datei hinzufügen

application.js Nachdem die Seite initialisiert wurde ich den Fehler unten auf firebug erhalten:

**PrivatePub is not defined** 
at 
<script type="text/javascript">PrivatePub.sign({"server":"http://0.0.0.0:9292","timestamp":1363853952047,"channel":"/mesajlar/new","signature":"7bf74474796412b524b6c6c8849c50cb245ce92d"});</script> 
</div> 

Und keine Ausgabe in Rails einzuloggen und RAILS_ENV=production bundle exec rackup private_pub.ru -s thin -E production Befehle log

Ich suchte und keine Lösung gefunden.

Wo ist das Problem?

Antwort

6

ich das Problem zu finden, werde ich schreiben Lösung, weil sonst jemand diesen Fehler sollte:

Mein Javascripts in Boden platziert ist so

<%= subscribe_to "/mesajlar/new" %> line calling before private_pub.js is loaded. 

So in Indexdatei

<% content_for :bottom do %> 
<%= subscribe_to "/mesajlar/new" %> 
<% end %> 

könnte dies lösen.

0

Ich glaube, Sie private_pub.js-application.js hinzuzufügen vergessen:

//= require private_pub