Rails를 사용한 채팅 소프트웨어 제작
                                            
                                                
                                                
                                                
                                                
                                                
                                                 12125 단어  ActionCableRubyRails
                    
개시하다 
Rails로 간단한 채팅 앱을 만들었기 때문에 당시 프로그램을 정리했다.
 
 
컨디션 $ ruby -v
ruby 2.5.1p57 (2018-03-29 version 63029) [x86_64-darwin19]
$ bin/rails -v
Rails 5.2.3
참고 자료 
채팅 소프트웨어를 만들 때 아래 내용을 참고하게 해 주세요.
이 글에 실린 대부분의 원본 코드는 다음과 같은 두 페이지의 내용을 바탕으로 한다.
Action Cable 실시간 채팅 애플리케이션으로 만드는 방법(Rails5.1.4에서) (하나) 허쿠로 이동! 
Rails5+Action Cable로 제작!간단한 채팅 소프트웨어(DHH 프레젠테이션 비디오) 
소스 코드 
채팅 소프트웨어의 소스 코드는 아래에서 확인할 수 있다.
Neufo/rails-sample-app/ChatApp 
절차. 
1. 앱 만들기
 
우선 채팅 기능을 설치한 앱을 제작한다.$ rails new ChatApp
2. 컨트롤러 만들기
 
ChaApp 디렉토리로 이동하여 다음 명령을 실행합니다.$ bin/rails generate controller rooms show
이렇게ChatApp/app/controllers/하면rooms_controller.rb만들 수 있어요.
3. 모형 만들기
 
사용자 입력 메시지를 저장하는 모델을 생성합니다.$ bin/rails generate model message content:text
$ bin/rails db:migrate
4. 메시지 목록 표시
 
RoomsController의 Show 방법을 사용하여 정보 목록을 가져옵니다.
ChatApp/app/controllers/rooms_controller.rbclass RoomsController < ApplicationController
  def show
    @messages = Message.all
  end
end
가져온 메시지를 표시하려면 View를 편집합니다.1 
ChatApp/app/views/rooms/show.html.erb<h1>Chat room</h1>
<div id="messages">
  <%= render @messages %>
</div>
페이지에 메시지의 요소를 삽입할 부분 템플릿을 만듭니다.
(ChaApp/app/views/에 메시지 폴더를 만들고 파일을 저장)
ChatApp/app/views/messages/_message.html.erb<div class="message">
  <p><%= message.content %></p>
</div>
5. 채널 만들기
 
클라이언트/서버 간의 통신 처리의 초기 형태를 만듭니다.$ bin/rails generate channel room speak
명령을 실행하면 클라이언트와 서버에 사용할 파일을 만들 것입니다.
$ ruby -v
ruby 2.5.1p57 (2018-03-29 version 63029) [x86_64-darwin19]
$ bin/rails -v
Rails 5.2.3
참고 자료 
채팅 소프트웨어를 만들 때 아래 내용을 참고하게 해 주세요.
이 글에 실린 대부분의 원본 코드는 다음과 같은 두 페이지의 내용을 바탕으로 한다.
Action Cable 실시간 채팅 애플리케이션으로 만드는 방법(Rails5.1.4에서) (하나) 허쿠로 이동! 
Rails5+Action Cable로 제작!간단한 채팅 소프트웨어(DHH 프레젠테이션 비디오) 
소스 코드 
채팅 소프트웨어의 소스 코드는 아래에서 확인할 수 있다.
Neufo/rails-sample-app/ChatApp 
절차. 
1. 앱 만들기
 
우선 채팅 기능을 설치한 앱을 제작한다.$ rails new ChatApp
2. 컨트롤러 만들기
 
ChaApp 디렉토리로 이동하여 다음 명령을 실행합니다.$ bin/rails generate controller rooms show
이렇게ChatApp/app/controllers/하면rooms_controller.rb만들 수 있어요.
3. 모형 만들기
 
사용자 입력 메시지를 저장하는 모델을 생성합니다.$ bin/rails generate model message content:text
$ bin/rails db:migrate
4. 메시지 목록 표시
 
RoomsController의 Show 방법을 사용하여 정보 목록을 가져옵니다.
ChatApp/app/controllers/rooms_controller.rbclass RoomsController < ApplicationController
  def show
    @messages = Message.all
  end
end
가져온 메시지를 표시하려면 View를 편집합니다.1 
ChatApp/app/views/rooms/show.html.erb<h1>Chat room</h1>
<div id="messages">
  <%= render @messages %>
</div>
페이지에 메시지의 요소를 삽입할 부분 템플릿을 만듭니다.
(ChaApp/app/views/에 메시지 폴더를 만들고 파일을 저장)
ChatApp/app/views/messages/_message.html.erb<div class="message">
  <p><%= message.content %></p>
</div>
5. 채널 만들기
 
클라이언트/서버 간의 통신 처리의 초기 형태를 만듭니다.$ bin/rails generate channel room speak
명령을 실행하면 클라이언트와 서버에 사용할 파일을 만들 것입니다.
채팅 소프트웨어의 소스 코드는 아래에서 확인할 수 있다.
Neufo/rails-sample-app/ChatApp
절차. 
1. 앱 만들기
 
우선 채팅 기능을 설치한 앱을 제작한다.$ rails new ChatApp
2. 컨트롤러 만들기
 
ChaApp 디렉토리로 이동하여 다음 명령을 실행합니다.$ bin/rails generate controller rooms show
이렇게ChatApp/app/controllers/하면rooms_controller.rb만들 수 있어요.
3. 모형 만들기
 
사용자 입력 메시지를 저장하는 모델을 생성합니다.$ bin/rails generate model message content:text
$ bin/rails db:migrate
4. 메시지 목록 표시
 
RoomsController의 Show 방법을 사용하여 정보 목록을 가져옵니다.
ChatApp/app/controllers/rooms_controller.rbclass RoomsController < ApplicationController
  def show
    @messages = Message.all
  end
end
가져온 메시지를 표시하려면 View를 편집합니다.1 
ChatApp/app/views/rooms/show.html.erb<h1>Chat room</h1>
<div id="messages">
  <%= render @messages %>
</div>
페이지에 메시지의 요소를 삽입할 부분 템플릿을 만듭니다.
(ChaApp/app/views/에 메시지 폴더를 만들고 파일을 저장)
ChatApp/app/views/messages/_message.html.erb<div class="message">
  <p><%= message.content %></p>
</div>
5. 채널 만들기
 
클라이언트/서버 간의 통신 처리의 초기 형태를 만듭니다.$ bin/rails generate channel room speak
명령을 실행하면 클라이언트와 서버에 사용할 파일을 만들 것입니다.
$ rails new ChatApp
$ bin/rails generate controller rooms show
$ bin/rails generate model message content:text
$ bin/rails db:migrate
class RoomsController < ApplicationController
  def show
    @messages = Message.all
  end
end
<h1>Chat room</h1>
<div id="messages">
  <%= render @messages %>
</div>
<div class="message">
  <p><%= message.content %></p>
</div>
$ bin/rails generate channel room speak
$ bin/rails s
/rooms/show를 열고 콘솔에 App.room.speak()를 입력합니다.진짜 답장하면 성공이야. 
 6. jQuery 활성화
고객이 편지를 보내고 받을 때 jQuery를 사용하기 때문에 준비를 해야 합니다.
ChatApp/Gemfile
gem 'jquery-rails'
bundle update됩니다.jQuery의 프로그램 라이브러리를 로드합니다.js에 추기하다.
ChatApp/app/assets/javascripts/application.js
(省略)
//= require jquery
//= require jquery_ujs
//= require_tree .
7. 메시징 처리
다음 기능을 만듭니다.
<form>
  <label>Say something:</label><br>
  <!-- room_speaker からサーバへメッセージを送信する -->
  <input type="text" data-behavior="room_speaker">
</form>
$(document).on 'keypress', '[data-behavior~=room_speaker]', (event) ->
    # Enterキーが押されたらサーバへメッセージを送信する
    if event.keyCode is 13 # return = send
        App.room.speak event.target.value
        event.target.value = ''
        event.preventDefault()
App.room = App.cable.subscriptions.create "RoomChannel",
  connected: ->
    # Called when the subscription is ready for use on the server
  disconnected: ->
    # Called when the subscription has been terminated by the server
  received: (data) ->
    # メッセージ一覧の末尾に受信したメッセージを追加する
    $('#messages').append data['message']
  speak: (message) ->
    # サーバのspeakメソッドを呼び出す
    @perform 'speak', message: message
class RoomChannel < ApplicationCable::Channel
  def subscribed
    # room_channelからデータを受信する
    stream_from "room_channel"
  end
  def unsubscribed
    # Any cleanup needed when channel is unsubscribed
  end
  def speak(data)
    # データベースにクライアントから受信したメッセージを保存する
    Message.create! content: data['message']
  end
end
$ rails generate job MessageBroadcast
class MessageBroadcastJob < ApplicationJob
  queue_as :default
  def perform(message)
    # room_channelにメッセージをブロードキャストする
    ActionCable.server.broadcast 'room_channel', message: render_message(message)
  end
  private
    def render_message(message)
      ApplicationController.renderer.render(partial: 'messages/message', locals: { message: message })
    end
end
ChatApp/app/models/message.rb
class Message < ApplicationRecord
    # データベースにメッセージが保存されたらジョブを登録する
    after_create_commit { MessageBroadcastJob.perform_later self }
end
Message BroadcastJob의 perform 메서드를 호출하고 모든 클라이언트에 메시지를 보냅니다.
클라이언트는received를 통해 메시지를 받고, 메시지 목록의 끝에 메시지를 추가합니다.
채팅 소프트웨어 제작은 이것으로 끝냅니다.
<%= render @messages %> 생략<%= render partial: "messages/message", collection: @messages %>.참조: 모음집 렌더링↩Reference
이 문제에 관하여(Rails를 사용한 채팅 소프트웨어 제작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Nabe847/items/0cd84d9e69cb60ef5d86텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)