小编Use*_*159的帖子

中间件中@env哈希中的变量HTTP_X_FORWARDED_HOST是什么?

在Rack中间件过滤器中,我知道call方法采用env哈希变量.我正在查看某人的Rack中间件代码,我明白了

 env['HTTP_X_FORWARDED_HOST']
Run Code Online (Sandbox Code Playgroud)

有人可以解释HTTP_X_FORWARDED_HOST的含义吗?它是请求源自的主机吗?

rack ruby-on-rails rack-middleware

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

重启后符号链接消失

我运行的是 Mac OS X 10.8.4

我创建以下符号链接

ln -s /Users/AlyssaPHacker/mysql/mysql.sock /tmp/mysql.sock
Run Code Online (Sandbox Code Playgroud)

但每次我重新启动计算机时,符号链接都会消失,我必须重新创建它。有谁知道如何解决这个问题?

macos symlink

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

什么"self.included(base)"在模块中意味着什么?

我看到这种模式很多:

module Article::Score

    def self.included(base)
        base.send :extend, ClassMethods
        base.send :include, InstanceMethods
    end

    module ClassMethods
    ...
    end

    module InstanceMethods
    ...
    end
end
Run Code Online (Sandbox Code Playgroud)

然后在文章模型中,我看到了这一点

class Article
   include Article::Score
   ...
end
Run Code Online (Sandbox Code Playgroud)

所以我的猜测是"base"可能是指文章类,我们只是包含实例方法并扩展类方法.但有人可以解释片段"self.included(base)"并概述那里发生了什么?

ruby

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

双冒号在模块内部做什么?

我正在看下面的代码:

module Tag

  def sync_taggings_counter
    ::Tag.find_each do |t|
       # block here
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

而我::Tag对标签模块内部感到困惑.

我知道双冒号用于命名空间类和类/模块中的模块.但我从来没有见过它像上面那样使用过.这究竟是什么意思?

ruby module

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

使用remove_instance_variable与set设置为nil

考虑一下

class SomeClass
  attr_reader :var

  def initialize
    @var = 42
  end 

  def delete_var
    remove_instance_variable(:@var)
  end

  def delete_var_2
    @var = nil
  end
end
Run Code Online (Sandbox Code Playgroud)

delete_var和delete_var_2有什么区别?

ruby

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

如何将系统 grep 结果导入 ruby

我目前正在 grep 系统并将结果返回到 ruby​​ 中进行操作。

def grep_system(search_str, dir, filename)
   cmd_str ="grep -R '#{search_str}' #{dir} > #{filename}"
   system(cmd_str)
   lines_array = File.open(filename, "r").read.split("\n)
end
Run Code Online (Sandbox Code Playgroud)

如您所见,我只是将 grep 的结果写入临时文件,然后使用“File.open”重新打开该文件。

有一个更好的方法吗?

ruby shell grep

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

Gemfile 和 Gemfile.lock 中指定版本的“=”和“~>”的区别

嘿,堆垛机同胞们!

对于这样一个基本问题感到抱歉,但是 gemfile.lock 和/或 gemfile 中的这些行之间有什么区别?

 /Gemfile.lock or /Gemfile

 mygem (1.1.0)
 yourgem (= 1.3.4)
 hisgem (<= 4.2.1)
 hergem (>= 0.5.1)
 somegem (~> 4.1.5)
Run Code Online (Sandbox Code Playgroud)

我能想到

 hisgem (<= 4.2.1)
Run Code Online (Sandbox Code Playgroud)

意味着任何低于 4.2.1 的 gem 版本都可以工作。同样,hergem (>= 0.5.1) 意味着任何大于 0.5.1 的 gem 版本都应该可以工作。但有什么区别

 yourgem (= 1.3.4)
Run Code Online (Sandbox Code Playgroud)

 somegem (~> 4.1.5)
Run Code Online (Sandbox Code Playgroud)

他们都指定了 gem 的确切版本吗?它们有何不同?

rubygems ruby-on-rails

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

为什么字符串复制功能只是指定指针不起作用?

考虑以下实现strcpy:

void my_strcpy(char target[], char source[])
{
   target = source;
}

int main(void)
{
   char target[20];
   char source[] = "Source String";

   my_strcpy(target, source);
   printf("Target: %s", target);

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,它让我质疑我对C中的字符串和数组的理解.

这是我的推理:target并且source实际上只是指向数组的第一个元素的指针,即.target == &target[0]source == &source[0].当我设置时target = source,我将指针指向指针所指向target的相同内存地址source.

现在当我printf target,它也应该打印"Source String".但事实并非如此.

有人可以解释原因吗?

c pointers strcpy

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

AWS安全组出口上的-1协议是什么意思?

我了解egressAWS安全组上的属性控制出站流量,但是没有人知道-1协议的含义吗?

resource "aws_security_group" "elb" {
  name = "example-elb”
  ingress {
    from_port = 80
    to_port = 80
    protocol = "tcp”
    cidr_blocks = [" 0.0.0.0/ 0”]
  }
  egress {
    from_port = 0
    to_port = 0
    protocol = "-1"
    cidr_blocks = [" 0.0.0.0/ 0"] }
}
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-security-group

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

Ruby中的独立问号有什么作用?

可能重复:
如何在Ruby中使用条件运算符(?:)?

我正在教自己Ruby并经历RubyMonk练习.我遇到了这个令我困惑的代码:

def calculate(*arguments)
  options = arguments[-1].is_a?(Hash) ? arguments.pop : {}
  options[:add] = true if options.empty?
  return add(*arguments) if options[:add]
  return subtract(*arguments) if options[:subtract]
end
Run Code Online (Sandbox Code Playgroud)

请注意,加法和减法是添加/减去其参数的现有函数,其长度可能不同.

计算应该像这样工作

 calculate(1,2,3,4,5,add: true) => 10
 calculate(10,3,4, subtract: true) => 3
Run Code Online (Sandbox Code Playgroud)

我的问题是,有人可以解释行中发生的事情:

options = arguments[-1].is_a?(Hash) ? arguments.pop : {}
Run Code Online (Sandbox Code Playgroud)

也就是说,独立问号到底是做什么的?此外,结肠是做什么的?

非常感谢你的帮助!

ruby

0
推荐指数
1
解决办法
614
查看次数

除了.json之外,我如何匹配此字符串中的所有内容?

鉴于此字符串

 "www.monkeysports.com%2Fcontent%2F123.json"
Run Code Online (Sandbox Code Playgroud)

我试图匹配除了最后一个".json"部分之外的所有内容.换句话说,我想要一个将执行以下操作的正则表达式:

 sum_regex.match("www.monkeysports.com%2Fcontent%2F123.json")
 => "www.monkeysports.com%2Fcontent%2F123"
Run Code Online (Sandbox Code Playgroud)

只有正则表达式才有可能吗?

ruby regex

0
推荐指数
1
解决办法
132
查看次数