小编Jac*_*cob的帖子

Can multiple sidekiq instances process the same queue

我不熟悉Sidekiq的内部,我想知道是否可以启动具有相同配置的几个Sidekiq实例(处理相同的队列).

是否有可能2个或更多Sidekiq实例将从队列中处理相同的消息?

更新:
在多台机器上运行Sidekiq时,我需要知道是否存在可能的冲突

ruby sidekiq

22
推荐指数
2
解决办法
8358
查看次数

Heroku拉私有github存储库

我尝试了不同的方法在Rails应用程序Gemfile中使用Github私有存储库引用.

1) Gemfile:
gem 'my_gem', :git => "https://#{github_user}:#{github_pw}@github.com/me/my_gem.git"
Run Code Online (Sandbox Code Playgroud)

'git push heroku'的结果:

Fetching https://user:pw@github.com/me/my_gem.git
error: The requested URL returned error: 401 while accessing https://user:pw@github.com/me/my_gem.git/info/refs
Git error: command `git clone 'https://user:pw@github.com/me/my_gem.git' "/tmp/build_2wxmqutch8gy7/vendor/bundle/jruby/1.9/cache/bundler/git/my_gem-929bddeee3dd4a564c2689e189190073df01431e" --bare --no-hardlinks` in directory /tmp/build_2wxmqutch8gy7 has failed.
Dependencies installed
Run Code Online (Sandbox Code Playgroud)

然后我发现了这篇文章https://help.github.com/articles/creating-an-oauth-token-for-command-line-use并创建了一个OAuth令牌.

2) Gemfile:
gem 'my_gem', :git => "https://#{github_oauth_token}@github.com/me/my_gem.git"
Run Code Online (Sandbox Code Playgroud)

'git push heroku'的结果:

Fetching https://0123456789abcdef0123456789abcdef01234567@github.com/me/my_gem.git
Password:
Run Code Online (Sandbox Code Playgroud)

Heroku失速并提示输入密码.

在我的本地机器上:

git clone https://user:pw@github.com/me/my_gem.git
Run Code Online (Sandbox Code Playgroud)

git clone https://0123456789abcdef0123456789abcdef01234567@github.com/me/my_gem.git
Run Code Online (Sandbox Code Playgroud)

作品perfekt!

本地:

# git --version
git version 1.7.9.5
Run Code Online (Sandbox Code Playgroud)

Heroku的:

# heroku run git --version …
Run Code Online (Sandbox Code Playgroud)

git github heroku

12
推荐指数
2
解决办法
3646
查看次数

访问回调函数中的局部变量

var inner = function() { console.log(x); }

// test 1
(function(cb) { var x = 123; cb(); })(inner);

// test 2
(function(cb) { var x = 123; cb.apply(this); })(inner);

// test 3
(function(cb) { var x = 123; cb.bind(this)(); })(inner);

// test 4
(function(cb) { cb.bind({x: 123})(); })(inner);
Run Code Online (Sandbox Code Playgroud)

所有测试都会导致:ReferenceError:未定义x

有人知道如何在回调中访问'x'作为局部变量吗?

javascript node.js

9
推荐指数
1
解决办法
2万
查看次数

Javascript(ES6)可迭代流

是否有使用ES6生成器使流可迭代的模式?

请参阅下面的"MakeStreamIterable".

import {createReadStream} from 'fs'

let fileName = 'largeFile.txt'
let readStream = createReadStream(fileName, {
  encoding: 'utf8',
  bufferSize: 1024
})
let myIterableAsyncStream = MakeStreamIterable(readStream)

for (let data of myIterableAsyncStream) {
  let str = data.toString('utf8')
  console.log(str)
}
Run Code Online (Sandbox Code Playgroud)

我对co或bluebird的协程deasync阻塞不感兴趣.

黄金是MakeStreamIterable应该是一个有效的函数.

javascript iterator stream ecmascript-6

9
推荐指数
2
解决办法
2791
查看次数

解析javascript函数中的外部作用域引用以进行序列化

var foo = (function(){
  var x = "bar";
  return function(){
    console.log(x);
  };
})();

console.log(foo.toString()); // function() {console.log(x);}
(foo)(); // 'bar'
eval('(' + foo.toString()+')()')); // error: x is undefined
Run Code Online (Sandbox Code Playgroud)

是否有解析(修改)函数的技术,因此外部作用域的引用成为本地引用,如:

function() {console.log(x);}
Run Code Online (Sandbox Code Playgroud)

变为:

function() {console.log("bar");}
Run Code Online (Sandbox Code Playgroud)

现在,该函数可以通过网络进行字符串化和传输,并在另一个运行时中执行.

也许有人可以将函数解析为抽象语法树然后修改它?引用将永远超出范围(不可用),对吧?

目标:

我正在将过滤器函数从节点运行时序列化到postgresql plv8运行时.现在过滤器函数有接口:dbClient.filter((row,age)=> row.age> age),ageFromOuterScope).then(matches => ...)

我想要接口dbClient.filter((row)=> row.age> age)).then(matches => ...),其中age是外部作用域的引用.

更新:

我只能想象一个解决方案.分析函数,检测函数外部变量的引用,然后重写原始函数:

function(row) {
   return row.age > age
}
Run Code Online (Sandbox Code Playgroud)

至:

function(row, age) {
  return row.age > age
}
Run Code Online (Sandbox Code Playgroud)

检测到的变量也应该添加到表示数组的字符串中,例如:

var arrayString = '[age]'
Run Code Online (Sandbox Code Playgroud)

然后评估字符串:

var functionArgs = eval(arrayString)
Run Code Online (Sandbox Code Playgroud)

最后:

dbClient.filter(modifiedFunction, ...functionArgs).then(matches => …
Run Code Online (Sandbox Code Playgroud)

javascript serialization function abstract-syntax-tree dereference

9
推荐指数
1
解决办法
214
查看次数

如何推断泛型参数的属性类型并映射到另一种类型

testFunc1正在使用SomeMapper和获取正确的泛型参数。

testFunc2下面我尝试使用映射类型作为函数参数,但由于某种原因 SomeMapper 得到了错误的泛型参数。

我怎样才能得到{ name: 'match' }作为函数的参数listener

type SomeMapper<T> = { [K in keyof T]: 'A' extends T[K] ? 'match' : 'no-match' }

function testFunc1<T extends Record<string, { params: Record<string, string> }>>(
  args: T & { [K in keyof T]: { listener: SomeMapper<T[K]['params']> } }
) {}

const test1 = testFunc1({
  someEvent: {
    params: { name: 'A' as const },
    listener: { name: 'match' } // type mapping with SomeMapper …
Run Code Online (Sandbox Code Playgroud)

typescript

7
推荐指数
1
解决办法
160
查看次数

当ember-data接收http状态401时,Ember.js应用程序应重定向到登录

我希望我的Emberjs应用程序处理HTTP状态未授权(401).

该应用程序使用ember-data集成JSON API(Rails).

当接收HTTP状态未授权时,客户端层(Emberjs)应该重定向到提示登录的Emberjs视图/模板(401).

我怎样才能在整个应用程序中执行此操作?

login ember.js ember-data

5
推荐指数
2
解决办法
2792
查看次数

Postgresql JSON列为HashWithIndifferentAccess

我有一个名为'my_models'的表,其中一个名为'settings'的'json'列.

我也有以下型号:

class MyModels < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)

"MyModels"实例的"settings"属性是Hash.

是否可以配置"MyModels"以将'settings'的原始列值类型转换为HashWithIndifferentAccess而不是Hash?

ruby postgresql activerecord json ruby-on-rails-4

5
推荐指数
1
解决办法
1460
查看次数

如何增加“类型实例化过深且可能无限”的限制

我有一个复杂的映射类型,它在任何方面都不是无限的。

如果源类型很大并且我将它用作复杂映射类型的通用参数,那么我有时会遇到“类型实例化过深并且可能是无限的”。

infertype Cast<T, CastType> = T extends CastType ? T : CastType所有地方使用结合来增加限制,但它并没有让我走得足够远,例如:

type ComplexMapping<Source> = (<mapping here>) extends infer M 
  ? Cast<M, any> // I set a specific type if possible
  : never
Run Code Online (Sandbox Code Playgroud)

我可以使用哪些方法来提高限额?

此外,类型化泛型参数 ( MyType<T extends Typed> = {}) 是否会增加类型实例化的深度?

typescript

5
推荐指数
0
解决办法
1273
查看次数

Heroku 的日志响应时间

Heroku 添加了一个名为 X-Request-Start 的 HTTP 标头。它是一个unix时间戳。

我在 Heroku 有一个 Rails 3.2 应用程序,想记录 HTTP 请求的响应时间。

在 Rails 中可能集成的最新点是什么:

start = Time.at(env['HTTP_X_REQUEST_START'].to_f / 1000.0).utc
response_time = Time.now.utc - start
Run Code Online (Sandbox Code Playgroud)

我正在考虑实现一个机架中间件来计算响应时间。

ruby-on-rails heroku

4
推荐指数
1
解决办法
605
查看次数

灰色动态段是空的

请参阅http://jsfiddle.net/kt2Hz/

我已阅读文档,api并浏览了Ember的源代码.没运气!

路线:

App.Router.map ->
  @resource 'customers', path: 'my_customers', ->
    @resource 'customer', path: '/:customer_id', ->
      @route 'edit', path: '/my_edit'

App.CustomerEditRoute = Ember.Route.extend
  setupController: (controller, model) ->
    controller.set('content', model)
    alert("inspect: #{Ember.inspect(model)}")
Run Code Online (Sandbox Code Playgroud)

警报输出是"inspect:undefined"

如果我检查params,对象是空的:

App.CustomerEditRoute = Ember.Route.extend
  model: (params) ->
    alert("inspect: #{Ember.inspect(params)}")
Run Code Online (Sandbox Code Playgroud)

警报输出是"inspect:{}"

ember.js

2
推荐指数
1
解决办法
865
查看次数

"无法找到Rails引擎gemspec的宝石"

我有一个名为"Backend"的Rails 3.2引擎(可安装).

Ruby平台是JRuby 1.7.0(1.9.3p203).

我还有一个Rails 3.2应用程序(称为my_app),其中Gemfile包含:

gem 'backend', :path => "/home/jacob/projects/backend"
Run Code Online (Sandbox Code Playgroud)

我在my_app的根目录下执行"bundle install"并收到以下错误:

"无法在/ home/jacob/projects/backend的源代码中找到gem'backend(> = 0)java'.源代码不包含任何版本的'backend(> = 0)java'"

backend.gemspec:

$:.push File.expand_path("../lib", \__FILE__)  
require "backend/version"

Gem::Specification.new do |s|  
  s.name        = "Backend"  
  s.version     = Backend::VERSION  
  s.authors     = [""]  
  s.email       = [""]  
  s.homepage    = ""  
  s.summary     = ""  
  s.description = ""  

  s.files = Dir["{app,config,db,lib}/\**/*"] + ["MIT-LICENSE", "Rakefile", "README.rdoc"]
  s.test_files = Dir["test/**/*"]
end
Run Code Online (Sandbox Code Playgroud)

gem ruby-on-rails jruby

1
推荐指数
1
解决办法
787
查看次数