В PrivatePub не определена ошибка Rails 3.2 частного паба
Я хочу использовать частный паб драгоценный камень в моем приложении рельсы. Я реализую с Railscast 316
После rails g private_pub:install
мой файл private_pub.yml:
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
мой файл private_pub.ru
# 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 }
мой индексный файл
<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" %>
Файл контроллера:
def create
params[:mesaj][:gonderen_id]= current_kullanici.id
@mesaj = Mesaj.create!(params[:mesaj])
PrivatePub.publish_to("/mesajlar/new", "alert('#{@mesaj.icerik}');")
end
я добавить //= require private_pub
в файл application.js
После инициализации страницы я получаю сообщение об ошибке ниже:
**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>
И нет выхода в журнале Rails и RAILS_ENV=production bundle exec rackup private_pub.ru -s thin -E production
журнал команд
Я искал и не нашел решения.
В чем проблема?
2 ответа
Решение
Я нахожу проблему, я напишу решение, потому что любой другой должен получить эту ошибку:
Мой javascripts находится в нижней части так
<%= subscribe_to "/mesajlar/new" %> line calling before private_pub.js is loaded.
Итак, в индексном файле
<% content_for :bottom do %>
<%= subscribe_to "/mesajlar/new" %>
<% end %>
должен решить это.
Я думаю, что вы забыли добавить private_pub.js
в application.js
:
//= require private_pub