小编tom*_*ave的帖子

Git:强制用户和密码提示

我最近更新我的本地Git的安装1.8.11.8.0.1.

我注意到,当我在GitHub上工作时,它不会在推送时提示我输入用户名和密码.

这让我很烦恼,因为我认为每次都要输入用户名和密码作为一个很好的安全措施.(如果其他人使用我的电脑怎么办?)

我检查了以下内容:

  • 1.8.0.1 在另一台计算机上仍然要求用户名和密码.
  • 我在github上的帐户仍然执行私人/安全控制.
  • 我使用的是https远程引用,而不是ssh.
  • 为了更好的衡量,我检查了我的~/.ssh想法.那里没有错.
  • 没有将登录详细信息存储在~/.gitconfig单个<proj>/.git/config文件中.
  • 我也没有存储与github相关的任何内容~/.netrc.
  • 我创建了一个新的虚拟存档:仍然没有提示我登录.

我在git 发行说明存档中找不到任何内容.

有谁知道这是一个新的git行为?如何恢复提示?

git github

52
推荐指数
5
解决办法
9万
查看次数

禁用git credential-osxkeychain

我需要禁用OS X的凭证帮助程序: git credential-osxkeychain

它在全局配置文件和本地配置文件中都被禁用,实际上它从未启用过.它仍然记住我的github登录详细信息.
我在笔记本电脑上,所以我不希望自动无密码访问我的回购.
使用ssh密钥.这是一台新计算机,整个系统设置仍在进行中.
现在我使用了httpsrepo refs,凭证助手一直在努力.

这些是我的conf文件:


git config --edit =>

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = false
[remote "origin"]
    url = https://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "develop"]
    remote = origin
    merge = refs/heads/develop
[branch "deploy"]
    remote = origin
    merge = refs/heads/deploy
Run Code Online (Sandbox Code Playgroud)

git config --global --edit =>

[user]
    email = **************** …
Run Code Online (Sandbox Code Playgroud)

git github

47
推荐指数
4
解决办法
4万
查看次数

nginx mime类型和gzip

Nginx允许您将文件扩展名映射到mime类型.正如文档所说,它甚至带有预先构建的mime类型列表(粘贴在问题的最后).

我总是信任这个列表,事情很有效,但现在我注意到有些类型缺失了.

怎么样application/javascriptapplication/json

它使用旧的弃用application/x-javascript,我想这是为了确保IE支持......但它真的没问题吗?


还有哪些类型应该被压缩?

我总是使用下面代码片段中的列表,虽然我承认它只是一个示例nginx conf文件的一部分,几年前,当我第一次开始使用nginx时,我用它作为一个例子.

我还应该包括application/json吗?

http {
    include mime.types;
    default_type application/octet-stream;

    gzip_types text/plain text/xml text/css
               text/comma-separated-values
               text/javascript application/x-javascript
               application/atom+xml;

    # text/html is included in the gzip list by default                   

    # ...
}
Run Code Online (Sandbox Code Playgroud)

默认的mime类型/etc/nginx/mime.types.

types {
    text/html                             html htm shtml;
    text/css                              css;
    text/xml                              xml;
    image/gif                             gif;
    image/jpeg                            jpeg jpg;
    application/x-javascript              js;
    application/atom+xml                  atom;
    application/rss+xml                   rss;

    text/mathml                           mml;
    text/plain                            txt;
    text/vnd.sun.j2me.app-descriptor      jad;
    text/vnd.wap.wml                      wml;
    text/x-component                      htc;

    image/png …
Run Code Online (Sandbox Code Playgroud)

nginx mime-types

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

服务器发送事件和Rails流

我正在尝试使用Rails 4 ActionController::Live和Server Sent Events.我正在使用MRI 2.0.0和Puma.

我可以看到,每个连接的客户端都保持与服务器的活动连接.我想知道是否可以在不保持所有响应流运行的情况下利用SSE.

Puma使用线程管理多个连接,我想cuncurrent连接的数量是有限的.
如果我想支持数以千计的客户注册到我的Rails应用程序进行SSE事件的真实场景,该怎么办?

有什么例子吗?

此外,我通常在nginx反向代理后面运行Rails应用程序服务器.它需要任何特定的设置吗?

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

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

Rspec嘲讽,可以'期待'还会将方法作为副作用吗?

我试图理解继承应用程序中的测试,我需要一些帮助.

有很多像这样的规范组(视图规范):

let(:job_post) { FactoryGirl.create(:job_post) }

# ...

before do
  expect(view).to receive(:job_post).at_least(:once).and_return(job_post)
end

it "should render without error" do
  render
end
Run Code Online (Sandbox Code Playgroud)

... job_post作为控制器上定义的辅助方法.(是的,他们本可以使用@instance变量,而我正在重构它).

现在,在我看来,使用expect内部before块是错误的.让我们暂时忘掉这一点.

通常上面的测试是绿色的.
但是,如果我删除expect行,则测试失败.在这种情况下似乎是在expect视图上存根方法.事实上,替换expectallow似乎有完全一样的效果.

我认为正在发生的事情通常是 - 当与服务器一起运行时 - 视图将调用job_posts并且消息将落在控制器上的辅助方法上,这是预期的行为.

然而,在这里,expect设定一个期望,同时,view用固定的返回值来固定方法.由于视图模板调用该方法,因此测试通过.

关于那个意外的"存根"副作用expect,我在rspec-mocks自述文件中发现了这个:

(...)我们还可以设置消息期望,以便在未调用find时示例失败:

person = double("person")
expect(Person).to receive(:find) { person }
Run Code Online (Sandbox Code Playgroud)

RSpec 用它自己的类似测试的方法取代了我们使用它进行存根或模拟的方法.在示例的最后,RSpec验证任何消息期望,然后恢复原始方法.

有没有人对这种方法的具体使用有任何经验?

ruby rspec ruby-on-rails rspec-mocks

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

HTTP响应标头:多个链接值

我正在为一个Rails应用程序的SEO工作.

该网站完全本地化,我正在关注这篇谷歌文章,以添加hreflang备用链接到页面.

这里的HTML链接<head>都可以.

我在回复标题方面遇到了一些麻烦.

我知道我应该为每个替代版本的页面提供值,但我不确定如何设置多个值.

我试图将它们作为逗号分隔列表传递.浏览器似乎正确地接收它,但由于单个值包含分号,它看起来是错误的.

有什么参考吗?即使是已知正确实现它的示例网页也会有所帮助.

html seo http-headers

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

红宝石的记忆,效率

这个问题主要是关于Ruby内部,速度可以用简单的基准来衡量.

在ruby中记忆返回值的最有效方法是什么?

我总是记住以下值:

def method
  @value ||= calculate_value
end
Run Code Online (Sandbox Code Playgroud)

但由于它在技术上扩展到:

@value = @value || calculate_value
Run Code Online (Sandbox Code Playgroud)

我想知道每次重新执行相同作业的效率.

这会更好吗?

def method
  @value ? @value : (@value = calculate_value)
end
Run Code Online (Sandbox Code Playgroud)

另外,它是否会在不同的口译员中发生变化?MRI,Rubinius等

ruby memoization

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

Rails,如何测试缺少参数的400个响应

我正在使用Rails 4.2.5,并且正在尝试测试来自控制器的预期400响应,以防请求格式错误。参数验证逻辑由处理strong_parameters

上下文

在我的控制器中,我有:

def user_params
  params.require(:user).permit(:foo, :bar, :baz)
end
Run Code Online (Sandbox Code Playgroud)

user_params在POST请求中引用,Accept并且ContentType标头设置为application/json

在中development,不带user参数的POST 将引发ActionController::ParameterMissing异常。
如果我在environments/development.rb文件中设置了此设置:

Rails.application.configure do
  config.consider_all_requests_local = false
end
Run Code Online (Sandbox Code Playgroud)

Rails的行为类似于in production并返回简单的400响应,而不是调试页面。大。

问题

尽管(rspec-rails ~> 3.4),我在控制器测试中做同样的事情有麻烦。

具体来说,这将通过:

expect {
  post :action, malformed_params
}.to raise_error(ActionController::ParameterMissing)
Run Code Online (Sandbox Code Playgroud)

但这不是因为引发异常:

post :action, malformed_params
expect(response.status).to eql 400
Run Code Online (Sandbox Code Playgroud)

我已经尝试过将其consider_all_requests_local用于测试环境,但无济于事。

有什么办法吗?对此有一个旧的答案,但是它没有帮助(甚至询问者也认为它没有用)。

编辑:

如评论中所要求的,这是控制器规范中的参数:

let(:user_data) do
  { foo: "foo", bar: "bar", baz: "baz" …
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails strong-parameters

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

使用Passenger和PHP应用程序运行Rails应用程序

我正在设置一个服务器,我需要运行Ruby On Rails 3应用程序以及一些PHP网站.该服务器是运行Apache 2.4.3的CentOS 5.8计算机.服务器用于测试和PRE生产,因此性能不是问题.

我正在为Rails应用程序使用Phusion Passenger,我创建了一堆虚拟主机(带有相关的文件夹和数据库帐户).然后,我打算将其他v-hosts用于PHP.

可能吗?我该怎么办?

非常感谢你


细节:
httpd.conf:

LoadModule passenger_module /app/auser/.rvm/gems/ruby-1.9.3-p286/gems/passenger-3.0.17/ext/apache2/mod_passenger.so  
PassengerRoot /app/auser/.rvm/gems/ruby-1.9.3-p286/gems/passenger-3.0.17  
PassengerRuby /app/auser/.rvm/wrappers/ruby-1.9.3-p286/ruby  
Run Code Online (Sandbox Code Playgroud)

(......)

##
## Virtual hosts
Include conf/extra/httpd-vhosts-phpmyadmin.conf
Include conf/extra/httpd-vhosts-rails01.conf
Include conf/extra/httpd-vhosts-rails02.conf
Include conf/extra/httpd-vhosts-php01.conf
Include conf/extra/httpd-vhosts-php02.conf
....
Run Code Online (Sandbox Code Playgroud)

乘客管理的v-hosts将如下:
包括conf/extra/httpd-vhosts-rails01.conf

<VirtualHost *:80>
   ServerName rails01.lcl
   DocumentRoot "/app/auser/apps/rails01/public"
   <Directory "/app/auser/apps/rails01/public">
      AllowOverride all
      Options -MultiViews
   </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

基于PHP的v-hosts将如下:包括conf/extra/httpd-vhosts-php01.conf

<VirtualHost *:80>
    ServerName php01.lcl
    DocumentRoot "/app/auser/apps/php01/public"
    <Directory "/app/auser/apps/php01/public">
        Options FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

php ruby apache ruby-on-rails passenger

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

Go 应用程序上下文中的 REPL 控制台

有没有办法在 Go 中的应用程序上下文中访问交互式 REPL 控制台?

作为参考,我正在考虑Ruby 的 irbpry(以及基于它们构建的Ruby On Rails 控制台)、 Node.js REPLScala REPL(和Play console)或Elixir 的 IEx 的功能。所有这些都是用于在应用程序上下文中打开 REPL 的开发(或生产!)工具。例如,它们允许访问应用程序的类、对象和常量,并通过扩展与应用程序的资源(例如数据库)进行交互。

有一些 Go REPL,例如gore,但尚不清楚如何将它们插入应用程序。

我想可以启动一个gore会话,然后导入所有包,但是 中发生的初始化又如何呢main

我的直觉告诉我,应该有一种方法来提供另一种“仅 REPL”main来编译不同的二进制文件,将应用程序作为 REPL 启动 - 而不是 HTTP 服务器。

有没有既定的方法可以做到这一点?或者参考实现?

go

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