小编Die*_*ngs的帖子

哪里可以为Clojure.Spec提供规格?

所以,我正在深入探讨Clojure.Spec.

我偶然发现的一件事是,在哪里提出我的规格.我看到三个选择:

全局规范文件

在大多数示例中,我发现在线,有一个大spec.clj文件,在主命名空间中需要.它具有所有(s/def),并(s/fdef)为所有的"数据类型"和功能.

优点:

  • 一个文件来统治它们

魂斗罗:

  • 这个文件可能很大
  • 违反单一责任原则?

生产命名空间中的规范

你可以把你(s/def)(s/fdef)旁边你的产品代码.这样,实现和规范共存于同一个命名空间中.

优点:

  • 实施和规范的共同定位
  • 一个名称空间 - 一个问题?

魂斗罗:

  • 生产代码可能会变得混乱
  • 一个命名空间 - 两个问题?

专用的spec命名空间结构

然后我想,也许Specs是第三种代码(在生产和测试之后).所以也许他们应该拥有自己的命名空间结构,如下所示:

?? src
?  ?? package
?     ?? a.clj
?     ?? b.clj
?? test
?  ?? package
?     ?? a_test.clj
?     ?? b_test.clj
?? spec
   ?? package
      ?? a_spec.clj
      ?? b_spec.clj
Run Code Online (Sandbox Code Playgroud)

优点:

  • specs的专用(但相关)命名空间

魂斗罗:

  • 您必须获取并需要正确的命名空间

谁有使用其中一种方法的经验?
还有其他选择吗?
您如何看待不同的选择?

clojure clojure.spec

49
推荐指数
3
解决办法
4236
查看次数

为什么"RVM - 默认"在MacOSX上对我不起作用?

在使用Ruby和Rails很长一段时间后,我想尝试RVM.一切正常,除了一件事:

在一个新开的终端ruby指向系统的红宝石,尽管事实上,我使用了rvm --default命令.

user@terra ~ $ ruby -v
ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10]
user@terra ~ $ which ruby
/opt/local/bin/ruby
user@terra ~ $ rvm list
   ruby-1.8.7-p334 [ ]
=> ruby-1.9.2-p180 [ ]
Run Code Online (Sandbox Code Playgroud)

我打电话后一切都很好 rvm reload

user@terra ~ $ rvm reload
user@terra ~ $ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.7.1]
tmangner@terra ~ $ which ruby
/Users/user/.rvm/rubies/ruby-1.9.2-p180/bin/ruby
Run Code Online (Sandbox Code Playgroud)

.bash_profile按照文档中的描述设置了我:

[[ -s "/Users/user/.rvm/scripts/rvm" ]] && source "/Users/user/.rvm/scripts/rvm" 
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.非常感谢.

我正在使用Mac OS X Snow Leopard(10.6.6)

更新:

--default …

ruby macos rvm

32
推荐指数
8
解决办法
2万
查看次数

在具有多个提交按钮的HTML表单中按"返回"

让我们设想一个带有两个提交按钮的HTML表单.其中一个位于表格的上半部分,并做一些不那么重要的事情.另一个按钮是实际提交按钮,用于保存输入的数据.此按钮位于表单的末尾.这两个按钮将触发不同的动作网址.

有经验的用户喜欢通过按"输入"或"返回"而不是单击相应按钮来提交表单.

不幸的是,浏览器将查找当前表单的第一个提交按钮,并使用它来执行表单提交.因为在我的表单中第二个按钮是实际的提交按钮,我需要告诉浏览器使用这个特定按钮(或与之关联的action-url).

我没有链接javascript监听器,它正在寻找按键或类似的东西.所以我正在寻找一个更好的解决这个问题的方法.但是,欢迎javascript或jquery解决方案(没有keypressed-listerner).

非常感谢你的帮助.

html javascript forms submit

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

Clojure.Spec验证的有意义的错误消息:pre

我用了最后几天深入挖掘了Clojure和ClojureScript中的clojure.spec.

到现在为止我觉得最有用的,使用规格为警卫:pre:post在依赖于数据在一定格式的公共职能.

(defn person-name [person]
  {:pre [(s/valid? ::person person)]
   :post [(s/valid? string? %)]}
  (str (::first-name person) " " (::last-name person)))
Run Code Online (Sandbox Code Playgroud)

这种方法的问题是,我得到一个java.lang.AssertionError: Assert failed: (s/valid? ::person person)没有任何关于究竟没有达到规范的信息.

有没有人一个想法如何得到一个更好的错误信息:pre:post警卫?

我知道conformexplain*,但这对那些:pre:post警卫没有帮助.

clojure clojure.spec

18
推荐指数
2
解决办法
1770
查看次数

在RSpec中需要lib,Ruby 1.9.2带来"没有这样的文件加载"

我正在尝试将我的一个Rails项目升级到Ruby 1.9.2.一切都很顺利,但一次RSpec测试破了.在这个测试中我require是一个Ruby lib:

# file spec/models/my_lib_spec.rb
require 'spec_helper'
require 'lib/services/my_lib'

describe "MyLib" do

  it "should do something" do
...
Run Code Online (Sandbox Code Playgroud)

lib看起来像这样:

# file lib/services/my_lib.rb
class MyLib

  def self.do_something
  ...
Run Code Online (Sandbox Code Playgroud)

在Ruby 1.8.7(REE)中,测试运行良好:

$ ruby -v   
ruby 1.8.7 (2011-02-18 patchlevel 334) [i686-darwin11.1.0], MBARI 0x6770, Ruby
Enterprise Edition 2011.03
$ rspec ./spec/models/my_lib_spec.rb
..

Finished in 1.4 seconds
2 examples, 0 failures
Run Code Online (Sandbox Code Playgroud)

在Ruby 1.9.2中我得到一个错误no such file to load:

$ ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.1.0]
$ …
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails require ruby-1.9

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

Rails:如何根据条件显示包含或不包含链接的块(link_to_if)

我有一个复杂的标签块(<h3>,, <p>...),我想根据条件使用链接呈现或没有链接.

我知道link_to_if这样的作品:

<% link_to_if condition, name, path %>
Run Code Online (Sandbox Code Playgroud)

如果条件false只是将呈现的名称.

我知道的link_to&block:

<% link_to path do %>
  [complex content]
<% end %>
Run Code Online (Sandbox Code Playgroud)

我想要两者的结合.如果条件是,则link_to_if接受a 的语句&block,以便在没有链接的情况下呈现块false.不幸的是,link_to_if声明的&block作品不像link_to声明:(

有没有人对我提出建议?任何帮助都非常感谢

ruby-on-rails link-to

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

Grails和Tomcat:在文件系统中存储上传文件的位置?

我用Grails写了一个小的Web应用程序.生成的war文件部署在Tomcat应用程序服务器上.

该应用程序具有附件的上传功能.我选择将上传的文件保存到磁盘(而不是在数据库中存储blob).

起初我在webapp-dir中选择了一个文件路径来存储文件,但后来我意识到这个目录将被每个新war文件的部署覆盖.

是否有一个最佳实践"何处上传的文件存储在您的本地文件系统"

谢谢你的帮助.

upload grails storage tomcat file

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

如何Clojure.Spec引用类型(如原子)?

我想知道我是如何规定一个函数,它有一个参数,在一个原子中保存一个映射.

(defn do-something [a]
  (prn (vals @a)))
Run Code Online (Sandbox Code Playgroud)

这些显然不起作用:

(s/fdef do-something
  :args (s/cat :a map?))
Run Code Online (Sandbox Code Playgroud)

我怎么说这a是对地图的引用?

clojure clojure.spec

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