(请参阅下面的详细配置,这是Henley Chiu回答的结果).
我一直试图将我的大脑包裹在Sidekiq部署,我并没有真正得到它.我在同一台服务器上有一个具有暂存环境和生产环境的应用程序.我所看到的关于sidekiq部署的所有内容基本上都说"只需将sidekiq/capistrano添加到您的部署文件中",所以我就这样做了.然后说明是"这里是带有选项的yml文件",但似乎没有解释.我需要命名空间吗?我在初始化文件中看到,但这似乎是指向服务器外部.
我之前部署过,每个阶段似乎都在适当的环境下启动sidekiq,但它们都从相同的队列进行处理.我的生产电子邮件试图由舞台sidekiq处理,并失败.我暂时停止了我的舞台,但最终我还需要再次使用它.我希望自己不会密集,我真的试图理解这一点,而且我很难找到一个明确的"这就是它的完成方式".
对于它的价值,这里是config/sidekiq.yml(在部署期间加载正常):
:concurrency: 5
:verbose: false
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:queues:
- [carrierwave, 7]
- [client_emails, 5]
- [default, 3]
staging:
:concurrency: 10
production:
:concurrency: 25
Run Code Online (Sandbox Code Playgroud)
日志文件和pids似乎在正确的位置,但队列只是合并.任何帮助都会很棒!
此外,如果重要:
Rails 3.2.11, passenger, nginx, rvm, Ubuntu 12.10, and Ruby 1.9.3
Run Code Online (Sandbox Code Playgroud)
首先,我在端口7777(或者除了默认的6379之外的任何端口)设置了一个新的redis服务器.几乎遵循我第一次使用的redis快速入门指南.
然后我制作了initilizer文件; 这有客户端和服务器配置.两者都需要使sidekiq工作多级.
请注意,我使用外部YAML文件进行设置.我正在使用SettingsLogic来简化操作,但您可以通过包含文件轻松地自己完成此操作.通过使用yaml文件,我们不必触摸我们的环境/登台或生产文件.
# config/initializers/sidekiq.rb
server = Settings.redis.server
port = Settings.redis.port
db_num = Settings.redis.db_num
namespace = Settings.redis.namespace
Sidekiq.configure_server do |config|
config.redis = { url: "redis://#{server}:#{port}/#{db_num}", namespace: namespace }
end …Run Code Online (Sandbox Code Playgroud) 我一整天都试图解决这个问题,这让我发疯了.
我有两个rails应用程序,ServerApp和ClientApp.ClientApp使用Her gem通过API从ServerApp获取数据.在我需要分页信息之前,一切都很棒.
这是我用来获取订单的方法(这使用kamainari进行分页和搜索搜索):
# ServerApp
def search
@search = Order.includes(:documents, :client).order('id desc').search(params[:q])
@orders = @search.result(distinct: true).page(params[:page]).per(params[:per])
respond_with @orders.as_json(include: :documents)
end
Run Code Online (Sandbox Code Playgroud)
它在json中返回一个哈希数组,Her用作订单的集合.这很好.
# Response
[
{
"client_id": 239,
"created_at": "2013-05-15T15:37:03-07:00",
"id": 2422,
"ordered_at": "2013-05-15T15:37:03-07:00",
"origin": "online",
"updated_at": "2013-05-15T15:37:03-07:00",
"documents": [
{ ... }
]
},
...
]
Run Code Online (Sandbox Code Playgroud)
但我需要分页信息.看起来我需要将其作为元数据发送给我的json.所以我改变了对此的回应:
respond_to do |format|
format.json do
render json: { orders: @orders.as_json(include: :documents), metadata: 'sent' }
end
end
Run Code Online (Sandbox Code Playgroud)
这确实发送了元数据,因此在我的ClientApp中,我可以编写@ orders.metadata并获取'sent'.但现在我的命令嵌套在'orders'中的数组中,所以我需要使用@ orders.orders,然后它将它视为数组而不是Her系列.
在做了一些阅读后,似乎通过标题发送分页信息是很多其他人这样做的方式(我能够使用本指南在after_filter中设置标题).但是我对如何在我的ClientApp中获取这些响应标头更加迷茫 - 我相信我需要一个法拉第中间件,但我只是没有运气让它工作.
如果有人知道我怎么能完成这件事,我将非常感激.我不能再花一天时间把头撞在墙上,但我觉得我只是解决这个问题的一个重要信息!
我有一个电影表,我想搜索标题并返回最接近的匹配项。
我认为全文搜索可能有用,但它似乎无法按单词的位置排序,尽管 postgres 知道该位置。这在 postgres 中可能吗?
这是我的查询:
SELECT collectibles.id, collectibles.title, ts_rank_cd(to_tsvector('english', collectibles.title), plainto_tsquery('old school')) AS score
FROM collectibles WHERE to_tsvector('english', collectibles.title) @@ plainto_tsquery('old school')
ORDER BY score DESC;
Run Code Online (Sandbox Code Playgroud)
以下是一些结果:(这是我能想到的最好的格式,抱歉!)
id | title | score
- 277568 | Wilson Meadows: Live At The 15th Old School & Blues Festival | 0.1
- 3545 | 5 Film Collection: Will Ferrell: Campaign / Old School (Unrtated Version) / Blades Of Glory / Roxbury / Semi-Pro | 0.1
- 10366 | Alice Cooper: Old …Run Code Online (Sandbox Code Playgroud) 我需要实现具有各种灵活要求的密码安全性.这些要求基本上取自Sans密码策略:
强密码具有以下特征:
包含以下五个字符类中的至少三个:
- 小写字符
- 大写字符
- 数字
- 标点
- "特殊"字符(例如@#$%^&*()_ + |〜 - =`{} []:";'<>/etc)
- 包含至少十五个字母数字字符.
还有要求不允许用户电子邮件地址出现在密码中.
理想情况下,我想要一个可以处理这个问题的宝石 - 它会得到更广泛的测试和使用,而且我们不太可能有bug.
如果没有宝石涵盖这一点,那么处理这些要求的最佳和最强化的方法是什么?理想情况下,我们可以说我们不仅安全,而且安全,因为我们有行业标准的实施.
到目前为止我发现的宝石是:
和
(我们正在使用Rails 3.2.17和Ruby 1.9.3,但是计划很快转向Rails 4和Ruby 2,因此也欢迎更新的解决方案).
我有父 -> 子组件,子组件在componentDidMount. fetch 在父级之上的 redux 存储中设置状态,这会导致子组件以不同的方式显示。
子组件也在使用material-ui withStyles,因此它会在组件周围创建一个 HOC。
在我的测试中,我需要挂载父组件,找到子组件,然后看到 fetch 正确更改了状态并导致子组件更新。
到目前为止,我的解决方案是这样的:
child.instance().fetchFunction().then(() => expect(..))但是,调用instance()上child返回HOC,所以我得到的错误:
child.instance(...).fetchFunction 不是函数
我见过的所有解决方案都使用shallow并dive绕过 HOC,但是如果我使用,shallow我将不得不在测试中创建一个模拟存储,它实际上不会将其作为集成测试进行测试。
我可以测试单独的 fetch 调用,然后使用测试组件shallow并将 props 传递给它,就好像状态已更改一样,但这并不能证明它们都可以一起工作。
这是一个代码沙盒,我在其中重现了该问题:
这是一些示例代码(基本上是代码和框):
App.js
import React from "react";
import Child from "./Child";
class App extends React.Component {
render() {
return <Child />;
}
}
export default App;
Run Code Online (Sandbox Code Playgroud)
Child.js
import React from "react";
import { withStyles } …Run Code Online (Sandbox Code Playgroud) ruby ×2
capistrano ×1
deployment ×1
enzyme ×1
faraday ×1
gem ×1
javascript ×1
jestjs ×1
json ×1
passwords ×1
postgresql ×1
reactjs ×1
security ×1
sidekiq ×1