我想知道配置模块导出的最佳方法是什么.以下示例中的"async.function"可能是FS或HTTP请求,为了示例而简化:
这是示例代码(asynmodule.js):
var foo = "bar"
async.function(function(response) {
foo = "foobar";
// module.exports = foo; // having the export here breaks the app: foo is always undefined.
});
// having the export here results in working code, but without the variable being set.
module.exports = foo;
Run Code Online (Sandbox Code Playgroud)
如何在执行异步回调后才导出模块?
编辑 我的实际用例的快速说明:我正在编写一个模块来在fs.exists()回调中配置nconf(https://github.com/flatiron/nconf)(即它将解析配置文件和设置nconf).
我有一个多模块构建,并希望独立地为不同的子项目运行测试.
有没有办法做到这一点在SBT,例如,如果我的多项目构建具有core和commons项目,我想只运行test在commons项目中.
我刚刚在一个新的ubuntu系统上安装了maven,其中包括maven-compiler-plugin.我有一个以前构建正常的java项目,默认为javac源和目标为5(jdk 1.5).但是,该项目现在正尝试在新系统上使用jdk1.3进行编译.是否有一种简单的方法来配置系统使用> = jdk5?
以下是系统的一些配置细节:
$ java -version
java version "1.6.0_45"
$ dpkg -s maven
Package: maven
Status: install ok installed
Priority: optional
Section: java
Installed-Size: 1489
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: all
Version: 3.0.4-2
$ dpkg -s libmaven-compiler-plugin-java
Package: libmaven-compiler-plugin-java
Status: install ok installed
Priority: optional
Section: java
Installed-Size: 75
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: all
Source: maven-compiler-plugin
Version: 2.0.2-6
Run Code Online (Sandbox Code Playgroud)
我检查了maven-compiler-plugin-2.0.2.pom文件,plexus-compiler-javac.originalVersion等设置为1.5.3.
我知道我可以在每个项目的基础上通过在插件上下文中包含源/目标标签来设置它,但我想将maven-compiler配置为默认为jdk5或更高,而不必在大量的项目.
我怎样才能做到这一点?
谷歌搜索和搜索stackoverflow,但我没有遇到任何事情.我想用节点开发一个交互式shell,并想知道最好的方法.是否有人可以推荐使用的图书馆?
我已经编写了一个库,现在需要一个CLI接口来与它进行交互,有两种方法:使用参数运行应用程序,或者通过交互式shell.例如
$ node myapp doSomething
App Result: I did something
$ node myapp cli
Entering interactive mode...
myapp>
myapp> doSomething
App Result: I did something
myapp>
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我有一个logback配置,其中包含一个带有阈值过滤器的appender:
<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
...
</appender>
Run Code Online (Sandbox Code Playgroud)
这可确保只将info和更高(警告,错误)记录到syslog中.但是,我们使用的第三方库之一是在DEBUG中记录特定事件,我想将此事件记录到syslog中.我想到的第一种方法是尝试重新映射记录器中的日志级别,但我不确定这是否可行?就像是:
<logger name="akka.some.Thing" level="DEBUG" logAs="INFO">
<appender-ref ref="SYSLOG" />
</logger>
Run Code Online (Sandbox Code Playgroud)
显然,"logAs"参数不存在,所以我不能这样做.将akka.some.Thing记录到SYSLOG appender同时为其他记录器留下过滤器的最佳方法是什么?
另一种方法是创建一个名为SYSLOG2的第二个appender,它没有适当的过滤器并设置特定的记录器来使用它,但是想知道是否有一种方法只用1个SYSLOG appender来配置logback ...
谢谢,
我正在尝试将SBT插件发布到存储库.我不确定这是否有任何相关性,但我们的插件加载了sbt-twirl插件 - 谷歌搜索,看起来像publishConfiguration可能被覆盖:
new PublishConfiguration(None, "dotM2", arts, Seq(), level)
Run Code Online (Sandbox Code Playgroud)
当我运行发布任务时,工件被部署到repo,但sbt任务然后失败:
sbt (my-sbt-plugin)> publish
[info] Loading global plugins from ...
...
[info] Done packaging.
[info] published sbt-my-sbt-plugin to http://my.repo.com/.../sbt-my-sbt-plugin-0.1-SNAPSHOT.jar
java.lang.RuntimeException: Repository for publishing is not specified.
.... stack trace here ....
[error] (my-sbt-plugin/*:publishConfiguration) Repository for publishing is not specified.
Run Code Online (Sandbox Code Playgroud)
导致错误的原因是什么,以及如何阻止发布失败?
**更新**这是 inspect publish
sbt (my-sbt-plugin)> inspect publish
[info] Task: Unit
[info] Description:
[info] Publishes artifacts to a repository.
[info] Provided by:
[info] {file:/path/to/my-sbt-plugin/}my-sbt-plugin/*:publish
[info] Defined at:
[info] (sbt.Classpaths) Defaults.scala:988 …Run Code Online (Sandbox Code Playgroud) 我有一个功能测试的Play项目.我能够用SBT执行测试.他们正在使用浏览器针对已部署的应用程序进行测试,即with OneServerPerSuite with OneBrowserPerSuite ...
我不想使用SBT /从源代码执行测试,而是编译和打包它们并从二进制文件运行.但是,如果我打包测试类(test: package在SBT中)并运行它们,则不执行任何测试,例如,如果我将所有依赖项复制到libs包括scala,ScalaTest等:
$ java -cp target/scala-2.10/myproject-acceptance_2.10-1.0-tests.jar:libs/* org.scalatest.tools.Runner -o -u results
Discovery starting.
Discovery completed in 20 milliseconds.
Run starting. Expected test count is: 0
DiscoverySuite:
Run completed in 57 milliseconds.
Total number of tests run: 0
Suites: completed 1, aborted 0
Tests: succeeded 0, failed 0, canceled 0, ignored 0, pending 0
Run Code Online (Sandbox Code Playgroud)
我无法进行任何测试.我已经试过-s,-m,-w,-q可切换斯卡拉测试运行.我最接近测试运行的是指定后缀(例如"MyWebappLogin")
$ ... Runner -o -u results -q Login …Run Code Online (Sandbox Code Playgroud) 我正忙着考虑在 MongoDB 中的集合上使用 TTL 索引,并想知道恢复时会产生什么影响。
例如,如果我将集合的 TTL 设置为 2 天:
db.logEvents.ensureIndex({"datestamp":1},{expireAfterSeconds:172800})
Run Code Online (Sandbox Code Playgroud)
如果我一周后使用 mongodump Restore 备份每日日志,logEvents 集合是否为空?对于 mongodump / mongorestore,我正在考虑在恢复之前手动修改/删除索引logEvents.metadata.json- 这可行吗?
如果从原始数据文件恢复怎么办 - 如何在 datadir 中使用恢复的原始文件启动 mongod 服务而不立即使数据过期?
我正在尝试为JSON创建一个jq过滤器,类似于如何根据内部数组中的值使用jq过滤对象数组? - 但即使使用它作为基础似乎并没有给我我想要的结果.
这是我的例子json
[{"id":"0001","tags":["one","two"]},{"id":"0002", "tags":["two"]}]
Run Code Online (Sandbox Code Playgroud)
我想返回一个ID列表,其中标签包含"one"(不是部分字符串匹配,完整元素匹配).
我尝试了一些变化,但无法正确使用过滤器.
. - map(select(.resources[] | contains("one"))) | .[] .id
Run Code Online (Sandbox Code Playgroud)
返回 "0001","0002"
尝试... .resources[].one)) | ...按"一个"过滤并期望只获得时,也尝试了但总是得到完整列表0001
我在哪里过滤错了?(有大约30分钟的jq经验,所以请原谅我的无知,如果这是显而易见的:)
DNS作为一种在服务器之间切换的机制有多可靠?对于低TTL,测试看起来很棒,但我想知道这对公共生产系统有多可靠?
我对这个策略的关注是我不确定DNS代理是否可以覆盖DNS记录缓存,一些提供商可能会使用它来节省流量.如果我们使用与其他系统的集成(例如移动网络服务)怎么办?
虽然我理解符合RFC的DNS是如何工作的,但我实际上并不确定投诉网络是如何运作的.(并且DNS rr对于分发也很有效,但这是专门用于切换的).
我有一个 Rails 模型,它有一个可以为空的非默认布尔字段,我正在尝试设置默认值。我找到了一篇关于避免 3-stat boolean 问题的博客文章,所以我试图满足这一点。这是我的迁移:
def change
change_column :table, is_foo, :boolean, null: false, default: false
end
Run Code Online (Sandbox Code Playgroud)
由于数据库中存在空值,运行迁移失败。更新现有条目以允许架构更改的正确方法是什么?或者应该将非空控件添加到模型中:
validates :is_foo, presence: true
Run Code Online (Sandbox Code Playgroud)
不确定将其添加到迁移中是否是“正确”的方式:
Table.update_all(:is_foo => false)
Run Code Online (Sandbox Code Playgroud)
同样,此字段是由迁移添加的,没有额外的非空/默认参数。添加列的迁移是否也需要这个,还是默认设置值?这是我运行的迁移:
add_column :table, is_foo, :boolean
Run Code Online (Sandbox Code Playgroud)
如果我添加,null: false, default: false了 add_column,是否所有的值都设置正确?