質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

2307閲覧

Railsで構築されているサービスの一部にNode.jsを使いたい

TabaKazu

総合スコア7

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2015/12/12 04:40

###Railsで構築されているサービスの一部にNode.jsを使いたい

  • 現在、Railsで簡易Twitterのようなミニブログを作成しました。

  • 認証にはDeviseを使っています。

  • 機能の追加で、 Node.js+Socket.ioを使ったチャット機能を加えたいです。

  • Node.jsでRailsのログイン情報を利用したいが上手くいきません。

現在、users#mypage(/mypage)で表示している、
0. ログイン中の会員情報 current_user
0. 会員情報に関連付いているコメント current_user.comments
0. 会員情報に関連付いているお気に入り current_user.favorites

上記3つをNode.jsで使いたいです。

簡単なAPIにして渡そうと考えました。
しかし、ログイン中の情報が扱えません。

###ソースコード

lang

1@user = current_user 2#JSONで受け取ると 3#SyntaxError: Unexpected token < 4# at Object.parse (native) 5# at IncomingMessage.<anonymous> (/var/nodejs/api.js:13:20) 6# at IncomingMessage.emit (events.js:117:20) 7# at _stream_readable.js:944:16 8# at process._tickCallback (node.js:442:13) 9 10@user = User.find_by id: 1 11#JSONで受け取ると 12#{ id: 1, 13# email: 'teratail@mail.com', 14# created_at: '2015-12-31T00:00:00.000Z', 15# updated_at: '2015-12-31T00:00:00.000Z' }

上記のようにcurrent_userを使わない場合は、JSONで値を受け取れます。

####補足情報(言語/FW/ツール)

  • Rails 4.2.5
  • Ruby 2.2.0
  • Devise 3.5.3
  • devise_token_auth 0.1.36

####環境

  • Vagrant VirtualBox
  • CentOS


自己解決させようと、devise_token_authというGemを使ってみたり、cookieに乗せてみることを考えましたが、上手く行きません。
これまで独学で、周りに頼れる人もいなく、手詰まり状態です。どうか皆様のお力をお貸し下さい。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Node.jsの機能を限定的、すなわちユーザーへのプッシュの部分だけにします。
一つのエンドポイント(Rails)の機能変更が他のエンドポイント(Node)に依存するのは望ましくないからです。さらに言うとdeviseのような単体のライブラリにアプリケーション全体が振り回されるのはなおさらです。

具体的な使用方法としては、Railsが何らかのアクション(データベースへのレコード挿入など)を受け取ったら、Node.jsへプッシュのリクエストを送り、Socket.ioがクライアントにプッシュを送信、そしてクライアント側がRailsにリクエストを送信します。

一気通貫でないのでアプリケーションへのコストは増大しますが、仮にそうしたいのならNode.js単体で作成したほうが良いかと思います。

投稿2015/12/12 04:50

編集2015/12/12 04:53
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TabaKazu

2015/12/13 12:28

ありがとうございます!!チャレンジしてみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問