如何在 Windows 操作系统的 Ruby on Rails 应用程序中使用 Redis?

Posted

技术标签:

【中文标题】如何在 Windows 操作系统的 Ruby on Rails 应用程序中使用 Redis?【英文标题】:How can I use Redis in my Ruby on Rails application with Windows OS? 【发布时间】:2021-12-31 00:36:23 【问题描述】:

首先我很抱歉我的新手问题,但我有点卡在这里。 如果我有 Windows 操作系统,谁能逐步告诉我如何在我的 Rails 6 应用程序中使用 Redis? 我已经安装了 Redis,目前它在我的 C:\Program Files 中, with these files inside it

我启动了redis-server.exe,当它开始运行时它说:

[8020] 20 Nov 17:26:06 # Warning: no config file specified, using the default config. 
In order to specify a config file use 'redis-server /path/to/redis.conf'

[8020] 20 Nov 17:26:06 * Server started, Redis version 2.4.6

[8020] 20 Nov 17:26:06 # Open data file dump.rdb: No such file or directory

[8020] 20 Nov 17:26:06 * The server is now ready to accept connections on port 6
379

[8020] 20 Nov 17:26:07 - 0 clients connected (0 slaves), 672768 bytes in use

[8020] 20 Nov 17:26:12 - 0 clients connected (0 slaves), 672768 bytes in use

[8020] 20 Nov 17:26:17 - 0 clients connected (0 slaves), 672768 bytes in use

........(它只是保持每 5 秒输出一次相同的文本)

同样在我的 Rails 应用程序中,我配置了一些东西。我将 config/cable.yml 文件更改为:

development:
adapter: redis
url: redis://localhost:6379/1

test:
adapter: test

production:
adapter: redis
url: <%= ENV.fetch("REDIS_URL")  "redis://localhost:6379/1"  %>
channel_prefix: actioncable_test_production

我的想法是创建一个名为“房间”的频道,并在控制台中输出一条消息,以查看其成功连接。但我的问题是它没有输出任何东西。

我将 app/javascript/channels/room_channel.js 设置为:

import consumer from "./consumer"

consumer.subscriptions.create("RoomChannel", 
connected() 
// Called when the subscription is ready for use on the server
console.log("Connected succesfully!")
,

disconnected() 
// Called when the subscription has been terminated by the server
,

received(data) 
// Called when there's incoming data on the websocket for this channel

);

和我的 app/channels/room_channel.rb 文件:

class RoomChannel < ApplicationCable::Channel
def subscribed
stream_from "room_channel"
end

def unsubscribed
# Any cleanup needed when channel is unsubscribed
end
end

另外,在我的命令提示符下显示:(在通常的渲染消息和类似的事情之后):

Started GET "/cable" for 127.0.0.1 at 2021-11-20 18:24:05 +0100
Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2021-11-20 18:24:06 +0100
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: keep-a
live, Upgrade, HTTP_UPGRADE: websocket)

当我转到浏览器控制台时,它说 Firefox 无法创建与 ws://localhost:3000/cable 的连接

知道这里有什么问题吗? 感谢您的回答和问候,Rererbit!

【问题讨论】:

【参考方案1】:

您正在使用一个非常旧且已弃用的 Redis 版本,这是 Microsoft 废弃的一个名为 OpenTech Redis 的项目。

我建议您查看 Memurai。 Memurai 是源自该项目的最新本地 Windows 端口的 Redis(请参阅 this commit)。

Memurai 还提供免费的开发者版。

免责声明:我在 Memurai 工作。

【讨论】:

感谢您的帮助!

以上是关于如何在 Windows 操作系统的 Ruby on Rails 应用程序中使用 Redis?的主要内容,如果未能解决你的问题,请参考以下文章

ruby on rails on windows

ruby on rails如何安装

使用 Mongrel 在 Windows 上运行 Ruby On Rails

Ruby on Rails 中的 Runner

2--Windows下: RubyMine + Ruby On Rails + mysql 搭建开发环境

ruby on rails + xampp + mysql (windows 7)