小编Rav*_*ine的帖子

Facebook App:localhost不再作为app域工作

我一直在使用Rails和jQuery为Facebook编写游戏.自从我开始使用Facebook Javascript SDK以来,使用localhost作为应用程序域似乎工作正常.我能够在本地和Heroku上测试我的游戏.

在过去的一天,似乎Facebook已经对他们的开发者UI进行了重大更新.现在,如果我将localhost添加为app域,则会出现以下错误:

这必须来自Canvas URL,Secure Canvas URL,Site URL,Mobile Site URL,Page Tab URL或Secure Page Tab URL.检查并更正以下域:localhost

我的游戏现在也无法在本地运行,当Javascript SDK登录用户时出现错误:

API错误代码:191 API错误说明:指定的URL不归应用程序所有错误消息:无效的redirect_uri:应用程序配置不允许使用给定的URL.

当我部署我的游戏时,这不会发生,因为herokuapp.com被认为是一个有效的应用程序域.

如果我不能再使用localhost或127.0.0.1,我应该如何开发和测试我的游戏?

javascript facebook ruby-on-rails heroku

92
推荐指数
7
解决办法
8万
查看次数

网络音频:如何让移动麦克风从远处获取音频?

通过访问用户的麦克风navigator.getUserMedia非常容易.但是,如果我使用移动浏览器并希望从远处获取音频,例如使用"扬声器"模式,该怎么办?

我将如何实现这一目标?似乎有本机应用程序可以实现这一点,但Web Audio呢?

这样做的目的是使用DTMF在设备之间发送消息.我已经通过我的笔记本电脑实现了这一点,因为它的麦克风可以远距离记录周围的音频,但我可以访问的任何手机似乎只能在"喉舌"附近录制音频,因此我必须将手机保持在非常靠近即使收到消息的可能性很小,也要使用扬声器.除非我能让移动麦克风从远处拾取音频,否则这会失败.

编辑:距离,我的意思是大于几英尺,而不是仅仅几厘米.环境声音,而不是麦克风旁边的声音.

javascript mobile google-chrome getusermedia web-audio-api

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

如何在Gulp中使用Browserify lib为模块添加别名?

Browserify自述文件描述了创建外部需求,如下所示: $ browserify -r through -r duplexer -r ./my-file.js:my-module > bundle.js

然后在您的页面中,您可以:

<script src="bundle.js"></script>
<script>
  var through = require('through');
  var duplexer = require('duplexer');
  var myModule = require('my-module');
  /* ... */
</script>
Run Code Online (Sandbox Code Playgroud)

如果你想使用命令行,这是有效的,但我想在gulpfile中使用Browserify.但似乎无法像./myfile-js:my-module示例中那样为模块添加名称.如果它有一个选项,我还没有找到它.以他们描述的方式要求我的模块的唯一方法是做,require(3)因为Browserify似乎给模块提供了数字,但这些数字改变了,显然这是不可取的.

编辑:我目前的解决方案是这样做:

var shell = require('gulp-shell');

gulp.task('browserify', shell.task([
  'browserify -r ./src/bundle.js:bundle > ./build/bundle.js'
]))
Run Code Online (Sandbox Code Playgroud)

如果我想充分利用Gulp管道,这是一种解决方法,并不是最佳选择.我想知道如何在没有命令行的情况下完成这项工作,或者如果没有,为什么这只能通过CLI完成?

javascript commonjs node.js browserify gulp

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

如何使用 Node.js 将音频样本数组写入 wav 文件?

我正在用 JavaScript 编写一个振荡器,它在正弦波频率之间创建一个扫描(即啁啾)。为了测试,我想将样本(浮点数)写入 wav 文件。我将如何在 Node.js 中做到这一点?我已经看到了很多关于浏览器端的信息,但没有任何特定于 Node 或任何依赖于浏览器 API 的信息。

javascript audio wav node.js javascript-oscillator

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

Docker:除非我手动重启,否则MySQL会拒绝主机IP

这是我的Dockerfile:

FROM debian:jessie-backports

RUN apt-get update --yes && apt-get upgrade --yes
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ 
  git \
  curl \
  build-essential\
  libssl-dev\
  ca-certificates\
  mysql-server\
  redis-server\
  elasticsearch

USER root

ENV HOME /root

# MYSQL SETUP
RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/#bind-address = 0.0.0.0/" /etc/mysql/my.cnf
RUN sed -i -e"s/^#max_connections\s*=\s*100/max_connections = 200/" /etc/mysql/my.cnf
RUN echo "\n[mysqld]\nskip-grant-tables\n" >> /etc/mysql/my.cnf
VOLUME ["/var/lib/mysql", "/var/log/mysql"]

EXPOSE 3306

# REDIS SETUP
RUN echo "daemonize yes\nbind 0.0.0.0" >> /etc/redis/redis-serve.conf

RUN sed 's/^daemonize no/daemonize yes/' -i /etc/redis/redis.conf \
 && sed …
Run Code Online (Sandbox Code Playgroud)

mysql docker

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

Rails中服务器发送事件的可伸缩性如何?

我正计划编写一个Rails应用程序,其中多个用户将使用ActionController :: Live和Puma通过服务器发送的事件将更新的信息推送给他们.我已经编写了一个测试应用程序,它看起来效果很好.对于我正在做的事情,SSE比WebSockets更有意义,因为大多数用户只是"倾听"而且SSE比设置websockets-rails更简单,这也取决于Faye(在这种情况下我只是自己编写)代码在Faye之上).

我想知道的是Rails中服务器发送事件的可扩展性如何?这是在我将使用Puma的前提下,Puma为每个连接到EventSource的用户创建一个新线程.潜在地,这个应用程序的目标是有可能同时连接数十万用户,但是Puma的默认线程限制是16.有什么理由我不能将线程限制更改为200,000?

ruby multithreading ruby-on-rails server-sent-events puma

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

如何阻止RSpec和Capybara的外部连接?

在我的Rails项目中,我想编写测试非理想条件,如缺乏互联网连接或超时.例如,我正在使用gem来联系API,并且如果我的应用程序和外部API之间存在连接问题,我希望确保正确处理错误.

我已经可以通过使用VCR制作夹具并从"盒式磁带"中删除响应来完成此操作.但是,这有缺点:

  • 它必须手动完成.
  • 如果我和一个团队(我是)一起工作,那么录音带就无法被监控.

如何在我的RSpec测试中简单地创建一个块来阻止外部连接,模拟缺少互联网连接?

ruby testing rspec ruby-on-rails capybara

4
推荐指数
2
解决办法
2925
查看次数

Rubinius和JRuby怎么可能这么慢?

我决定看看迭代一系列哈希需要多长时间.以下是代码:

pairs = [{name: "firstname", value: "string"},{name: "lastname", value: "string"},{name: "country", value: "string"},{name: "city", value: "string"},{name: "state", value: "string"},{name: "company", value: "string"},{name: "year", value: "string"},{name: "political_affiliation", value: "string"},{name: "social_security_number", value: "string"}] * 1000
blank = {}

start = Time.now
pairs.each do |pair|
  blank[pair[:name]] = pair[:value]
end

p Time.now - start
Run Code Online (Sandbox Code Playgroud)

通过从循环之前的当前时间减去循环之后的当前时间来计算时间.

根据代码中的数学计算,这是YARV 2.1.1中计算所花费的时间:

0.001962017
Run Code Online (Sandbox Code Playgroud)

这是Rubinius 2.2.6花了多长时间:

0.022598
Run Code Online (Sandbox Code Playgroud)

和jRuby 1.7.12

0.022317
Run Code Online (Sandbox Code Playgroud)

据说Rubinius和jRuby比YARV具有性能优势.为什么他们花费的时间几乎是执行相同基本操作的12倍?这是正常的还是我有不正确的配置?

ruby benchmarking rubinius jruby microbenchmark

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

Rails 4 - "没有将Fixnum隐式转换为字符串" - 错误仅发生在生产中

在生产中运行我的Rails 4.1项目时出现以下错误:

ActionView::Template::Error (no implicit conversion of Fixnum into String):
 8:     %meta{content: "", name: "description"}/
 9:     %meta{content: "", name: "author"}/
10:     = stylesheet_link_tag    'application', media: 'all'
11:     = csrf_meta_tags
12:   %body
13:     .header.navbar.navbar-inverse
14:       = render 'layouts/header'
Run Code Online (Sandbox Code Playgroud)

对我来说没有任何意义的是,一切都在开发中运行得很好,上面的错误确实让我不知道实际上是什么错误(没有特定的行号),HAML模板中没有任何内容出现在我面前.

运行我的UsersController中的以下代码时,我也遇到类似的错误:

@user = User.last
Run Code Online (Sandbox Code Playgroud)

再次,在开发中工作得很好,但在生产中它告诉我TypeError(没有将Fixnum隐式转换为String).

我忽略了什么吗?我没有看到任何需要类型转换的东西.

注释掉我提到的最后一行不会影响其他错误.

ruby production types runtime-error ruby-on-rails

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

如何从原始SQL查询中获取ActiveRecord模型实例?

在Rails中,我有时想用MySQL进行查询,这对于ActiveRecord方法来说太复杂了.所以我通常会做以下操作来获取一系列哈希:

query = "SELECT * FROM ..."

result = ActiveRecord::Base.connection.exec_query.to_a
Run Code Online (Sandbox Code Playgroud)

通常情况下,我可以逃避这种情况,但有时候我仍然想要一个模型的实例数组,所以我可以将它们用于CRUD.

在那种情况下,我试过这个:

result.map{|u| User.new(u)}
Run Code Online (Sandbox Code Playgroud)

这工作正常,直到我尝试创建,保存或更新.当发生这种情况时,我收到一个错误,告诉我已经存在具有相同ID的记录.

不知何故,ActiveRecord已经知道如何使用它能够构造的查询来完成这项工作.我怎样才能做同样的事情并使其成为可以将一个复杂的原始查询转换为一组模型实例,这些实例将改变表而不是试图插入和失败?

ruby mysql sql activerecord ruby-on-rails

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

即使安装了Rails控制台,也无法找到activesupport-4.1.2

当我运行Rails 4.1.2服务器时,我没有错误.

但是,如果我运行'rails c',我会收到以下错误:

Could not find activesupport-4.1.2 in any of the sources
Run `bundle install` to install missing gems.
Run Code Online (Sandbox Code Playgroud)

奇怪的是,activesupport-4.1.2已经安装并在Gemfile.lock中指定.我尝试过'捆绑更新'以及删除Gemfile.lock并运行'bundle install'.我也尝试在我的Rails gemfile中指定特定版本的ActiveSupport,但这已经无处可去了.

我真的很想使用最新的Rails,但是我不能使用控制台似乎很糟糕.

FIY:我在Linux中使用Ruby 2.1.2p95和RVM.

编辑:我卸载了所有activesupport宝石并重新安装4.1.2.这是'宝石列表activesupport说':

*** LOCAL GEMS ***

activesupport (4.1.2)
Run Code Online (Sandbox Code Playgroud)

同样的问题.

EDIT2:这是我的Gemfile.lock:

GEM
  remote: https://rubygems.org/
  specs:
    actionmailer (4.1.2)
      actionpack (= 4.1.2)
      actionview (= 4.1.2)
      mail (~> 2.5.4)
    actionpack (4.1.2)
      actionview (= 4.1.2)
      activesupport (= 4.1.2)
      rack (~> 1.5.2)
      rack-test (~> 0.6.2)
    actionview (4.1.2)
      activesupport (= 4.1.2)
      builder (~> 3.1)
      erubis (~> 2.7.0)
    activemodel (4.1.2)
      activesupport (= 4.1.2) …
Run Code Online (Sandbox Code Playgroud)

ruby gem ruby-on-rails activesupport bundler

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