我正在通过Ruby绑定与Rserve合作.建立与Rserve的连接非常简单,我认为最好在全局范围内保持连接,以避免将其拆除并根据需要重新构建它的开销(我不是在多线程环境中运行) .
由于定义的对象会粘在一起,并且可能会在以后的操作中进行分类,因此我想清除它们.我见过:
myvar = 1
rm(myvar)
Run Code Online (Sandbox Code Playgroud)
但是,我宁愿重新初始化所有内容,以避免必须手动跟踪定义的内容.这可能吗?如果是这样,是否会产生很大的开销?
我正在尝试从Rails 3.2.3应用程序中提取一组模型到gem中,以便它们可以用作应用程序之间的共享接口.
我将模型移动到模块中并将其放在lib/invite_interface/invite.rb中
module InviteInterface
class Invite < ActiveRecord::Base
belongs_to :user
end
def to_json; end;
def from_json; end;
end
Run Code Online (Sandbox Code Playgroud)
我把rspec放到gemfile中,让它成功运行,创建了以下规范:
require 'spec_helper'
describe InviteInterface::EncounterSurvey do
it 'should belong to user' do
subject.should respond_to(:user)
end
end
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法在模型上执行rspec,因为活动记录/ rspec需要活动连接.
1) InviteInterface::Invite should belong to encounter survey set
Failure/Error: subject.should respond_to(:user)
ActiveRecord::ConnectionNotEstablished:
ActiveRecord::ConnectionNotEstablished
# /Users/justin/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:398:in `retrieve_connection'
# /Users/justin/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:168:in `retrieve_connection'
# /Users/justin/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:142:in `connection'
# /Users/justin/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/model_schema.rb:228:in `columns'
# /Users/justin/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/model_schema.rb:243:in `column_defaults'
Run Code Online (Sandbox Code Playgroud)
如何防止ActiveRecord查找数据库连接?
D3教程提供了一个产生随机序列的函数:
var t = 1297110663, // start time (seconds since epoch)
v = 70, // start value (subscribers)
data = d3.range(33).map(next); // starting dataset
function next() {
return {
time: ++t,
value: v = ~~Math.max(10, Math.min(90, v + 10 * (Math.random() - .5)))
};
}
Run Code Online (Sandbox Code Playgroud)
注意~~(tilda tilda):
value: v = ~~Math.max(10, Math.min(90, v + 10 * (Math.random() - .5)))
Run Code Online (Sandbox Code Playgroud)
从在javascript终端中玩游戏,我看到:
~~1
1
~~-1
-1
~~-1.3
-1
parseInt(5)
5
parseInt(-5)
-5
parseInt(-5.3)
-5
parseInt(5.3)
5
Run Code Online (Sandbox Code Playgroud)
既然~~和parseInt似乎是等价的,那么使用parseInt的理由是什么?
以前我可以通过命令行启动Rserve:
R CMD Rserve
Run Code Online (Sandbox Code Playgroud)
在Ubuntu上升级到3.0.2后,我得到:
/usr/lib/R/bin/Rcmd: 62: exec: Rserve: not found
Run Code Online (Sandbox Code Playgroud)
我尝试过手动重新安装和启动
R
> install.packages('rserve')
> ...compiles successfully...
> RServe()
Starting Rserve:
/usr/lib/R/bin/R CMD /home/user1/R/x86_64-pc-linux-gnu-library/3.0/Rserve/libs//Rserve
Run Code Online (Sandbox Code Playgroud)
......工作正常.
R CMD Rserve仍然出现与上述相同的错误.我试过通过以下方式指定路径:
export RHOME="/home/jwiley/R/x86_64-pc-linux-gnu-library/3.0/Rserve/libs/"
export R_LIBS="/home/jwiley/R/x86_64-pc-linux-gnu-library/3.0/Rserve/libs/"
Run Code Online (Sandbox Code Playgroud)
如何说服R CMD使用正确的目录?
我想将rails服务器绑定到127.0.0.1而不是0.0.0.0,因此当我在咖啡店工作时无法访问它.
是否有配置文件,我可以指定此选项,所以我不必通过命令行开关:
rails server -b 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
?
我正在阅读ECMA Script 2015规范.
在functions我看到:
除了它的属性之外,函数还包含可执行代码和状态,用于确定调用时的行为方式.函数的代码可能会也可能不会写入ECMAScript (强调添加).
在什么情况下函数的代码不能用ECMA脚本编写?
给定一个对象和一个模块,如何检查该对象是否已被模块扩展?
似乎没有任何相应的延伸?方法
moirb(main):001:0> module Foobar
irb(main):002:1> end
=> nil
irb(main):003:0> o=Object.new
=> #<Object:0x000001010d1400>
irb(main):004:0> o.class.include? Foobar
=> false
irb(main):005:0> o.extend Foobar
=> #<Object:0x000001010d1400>
irb(main):006:0> o.class.include? Foobar
=> false
irb(main):007:0> o.class.included_modules
=> [PP::ObjectMixin, Kernel]
irb(main):016:0* o.methods.grep /extend/
=> [:extend]
irb(main):019:0> o.class.methods.grep /extend/
=> [:extend]
Run Code Online (Sandbox Code Playgroud) 我正在使用夜视仪"0.8.6".根据页面上的文档,我创建了一个pages/login.js文件并将目录添加到配置文件中:
module.exports = {
url: function() {
return this.launchUrl;
}
};
Run Code Online (Sandbox Code Playgroud)
文档提到this.api,但那不是客户端/浏览器的属性. this.launchUrl然而,显然是可用的.
我更改了现有测试以使用它:
module.exports = {
'Login page has a login button' : function (browser) {
browser
.url(browser.page.login().url())
.waitForElementVisible('body', 10000)
.assert.containsText('button', 'SIGN IN')
.end();
}
}
Run Code Online (Sandbox Code Playgroud)
测试现在失败了..url尝试打开selenium data:,,而不是this.launchUrl的值,即localhost:3000.
页面对象显然是在登录测试的上下文中进行评估的,因此页面对象中的这个应该有this.launchUrl.潜入源代码我看到混合中还有页面包装器对象,不知何故.
如何在0.8.6中正确创建和使用页面对象?
我有一个包含JSON和计划文本的文本列.我想将其转换为JSON,然后选择一个特定的属性.例如:
user_data
_________
{"user": {"name": "jim"}}
{"user": {"name": "sally"}}
some random data string
Run Code Online (Sandbox Code Playgroud)
我试过了:
select user_data::json#>'{user,name}' from users
Run Code Online (Sandbox Code Playgroud)
我明白了:
ERROR: invalid input syntax for type json
DETAIL: Token "some" is invalid.
CONTEXT: JSON user_data, line 1: some...
Run Code Online (Sandbox Code Playgroud)
有可能阻止这种情况吗?
我跑过sim.js,一个用于离散事件模拟的库,我认为在学习node.js时使用会很有趣.它是一个单独的javascript文件,不依赖于其他库或浏览器.
将此包含在我的代码库中的最佳做法是什么?将.js保存到磁盘,并将其转换为标准节点模块?
即:
// ---sim.js
var Sim = function () {
this.simTime = 0;
this.entities = [];
}
Sim.Event = function (name) {
this.name = name;
};
// ... functions continue
module.exports = Sim;
// --- main.js
var Sim = require('./sim');
var sim = new Sim();
var trafficLights = [new Sim.Event("North-South Light"),
new Sim.Event("East-West Light")];
Run Code Online (Sandbox Code Playgroud)
或者有一种更简单的方法,不需要修改/模块化原始的js?
javascript ×4
r ×2
rserve ×2
activerecord ×1
ecmascript-6 ×1
extend ×1
gem ×1
json ×1
module ×1
node.js ×1
plpgsql ×1
postgresql ×1
rspec ×1
ruby ×1
workspace ×1