为了避免滥用,我想在Rails应用程序中为REST API添加速率限制.在对此进行一些研究后,看起来最好的做法是将此职责移到Web服务器而不是在应用程序本身中检查这一点.不幸的是,我无法在我的情况下完成,因为我在Heroku上托管应用程序,因此无法控制Web服务器设置.
在这种情况下应该采取什么措施来阻止滥用API?
有没有人找到一个可靠,通用的解决方案来管理iPhone项目的依赖关系?我希望将我的iPhone应用程序拆分为可重用的组件,然后将它们分成需要它们的项目.我想我正在寻找一个Maven式的工作流程,但是对于Xcode/iPhone项目.到目前为止,我尝试了很多方面,例如:
我创建了一个Maven插件的iPhone应用程序,它能够自动应用的建筑和签署,但我一直觉得我对抗Maven来得到这个工作,这是完全相当混乱.除非没有其他选择,否则我宁愿不使用它.
我也尝试使用静态库打包代码重新使用,但问题是我还想在我的项目中包含可重用的XIB和图像,这些不能包含在静态库中以进行重新分发.它们非常适合代码,但我希望有一个系统能够完成所有事情,而不是针对不同类型的依赖关系使用不同的依赖关系管理系统.
目前我已经决定使用版本控制系统为我做依赖.在这种情况下,当我签出项目时,我正在使用SVN外部代码将依赖项加载到工作区中.
有没有人对我能做什么有任何想法?
更新
我现在正在使用CocoaPods来执行此任务.
我在使用Exhuberant Ctags跳转到Ruby bang方法时遇到了问题.我搜索了其他有类似问题的人,但我找不到任何东西.可以使用以下小型Ruby类显示问题的示例:
class Hello
def start
method!
end
def method
# Blah
end
def method!
# Blah
end
end
Run Code Online (Sandbox Code Playgroud)
如果ctags -R .是在这个文件运行生成的tags文件包含以下两行表明这两种方法都在代发现:
method test.rb /^ def method$/;" f class:Hello
method! test.rb /^ def method!$/;" f class:Hello
Run Code Online (Sandbox Code Playgroud)
但是,如果我将光标放在第method!3行的调用上并按下,^]则光标会跳转到method定义而不是正确的爆炸版本.好像感叹号没有包含在搜索的标识符中.
有没有办法解决这个问题,所以正确的方法是跳到?
我正在使用open的openpgp包来制作一个简单的程序来加密短消息和ASCII装甲.我目前的代码是:
package main
import (
"code.google.com/p/go.crypto/openpgp"
"code.google.com/p/go.crypto/openpgp/armor"
"fmt"
"log"
"os"
)
func main() {
to, err := openpgp.NewEntity("John Smith", "comment", "john@example.com", nil)
if err != nil {
log.Fatal(err)
}
from, err := openpgp.NewEntity("John Smith", "comment", "john@example.com", nil)
if err != nil {
log.Fatal(err)
}
recipients := []*openpgp.Entity{to}
armorer, err := armor.Encode(os.Stdout, "PGP MESSAGE", nil)
if err != nil {
log.Fatal(err)
}
defer armorer.Close()
encrypter, err := openpgp.Encrypt(armorer, recipients, from, nil, nil)
if err != nil {
log.Fatal(err)
} …Run Code Online (Sandbox Code Playgroud) 我正在制定我的第一个自定义 Bazel 规则。这些规则允许运行bats命令行测试。
我已经在下面逐字包含了规则定义。到目前为止我对它非常满意,但有一个部分感觉非常丑陋且不标准。如果规则用户向规则添加二进制依赖项,那么我确保二进制文件出现在规则上,PATH以便可以对其进行测试。目前,我通过创建二进制路径列表,然后将它们附加到$PWD脚本内扩展的完整执行路径来实现此目的。这感觉很糟糕并且容易出错。
有没有更惯用的方法来做到这一点?我不相信我可以访问规则中的执行路径,因为它直到执行阶段才创建。
感谢您的帮助!
BATS_REPOSITORY_BUILD_FILE = """
package(default_visibility = [ "//visibility:public" ])
sh_binary(
name = "bats",
srcs = ["libexec/bats"],
data = [
"libexec/bats-exec-suite",
"libexec/bats-exec-test",
"libexec/bats-format-tap-stream",
"libexec/bats-preprocess",
],
)
"""
def bats_repositories(version="v0.4.0"):
native.new_git_repository(
name = "bats",
remote = "https://github.com/sstephenson/bats",
tag = version,
build_file_content = BATS_REPOSITORY_BUILD_FILE
)
BASH_TEMPLATE = """
#!/usr/bin/env bash
set -e
export TMPDIR="$TEST_TMPDIR"
export PATH="{bats_bins_path}":$PATH
"{bats}" "{test_paths}"
"""
def _dirname(path):
prefix, _, _ = path.rpartition("/")
return prefix.rstrip("/")
def _bats_test_impl(ctx):
runfiles = …Run Code Online (Sandbox Code Playgroud)