小编Mar*_*mas的帖子

如何调试/显示使用RestClient发送的请求

我正在尝试使用RestClient使用post方法访问Web服务.我正在发送指定的授权令牌,但我仍然收到403状态错误,这意味着我被禁止使用该API.有什么方法可以看到使用http post发送的请求,以便我可以验证标头?我无法找到任何示例或任何文件提及如何做到这一点?

我的代码与此类似:

token = get_token

response = RestClient.post "https://api-dev.xxx.com/software/services/search/ABC",
  :authorization => "Bearer #{token}"
Run Code Online (Sandbox Code Playgroud)

ruby debugging http rest-client

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

从一组键创建一个哈希

我在SO中查看了其他问题,并没有找到我的具体问题的答案.

我有一个数组:

a = ["a", "b", "c", "d"]
Run Code Online (Sandbox Code Playgroud)

我想将此数组转换为散列,其中数组元素成为散列中的键,并且它们所有相同的值都表示1.即散列应该是:

{"a" => 1, "b" => 1, "c" => 1, "d" => 1}
Run Code Online (Sandbox Code Playgroud)

ruby arrays hash

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

Ruby - 从字符串中删除模式

我有一个字符串模式,作为一个例子,看起来像这样:

WBA - Skinny Joe vs. Hefty Hal
Run Code Online (Sandbox Code Playgroud)

我想从字符串中截断模式"WBA - "并返回"Skinny Joe vs. Hefty Hal".

ruby regex string

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

覆盖database.yml的策略?

在我的环境中,部署服务器具有database.yml中的大部分连接信息.也就是说,他们知道它们是开发服务器,测试服务器还是生产服务器,并且知道它们各自的数据库连接信息.

我可以将此信息封装在Server类中,以便我可以检索信息:

Server["environment"] #=> production
Server["db_host"] #=> db5.example.com
Server["db_password"] #=> [a decrypted password]
Run Code Online (Sandbox Code Playgroud)

等等.我想部署一个Rails应用程序,并根据服务器设置进行自动配置.做这个的最好方式是什么?

一种方法是在我的database.yml中使用Erb:

<%= Server["environment"] %>: 
  adapter: oracle_enhanced
  host: <%= Server["db_host"] %>
  username: db_user 
  password: <%= Server["password"] %>
Run Code Online (Sandbox Code Playgroud)

我不是太兴奋这样做,但它会工作.在这种情况下,我会在哪里放置定义Server类的'server.rb' - 在yml中需要它?在ActiveRecord加载database.yml之后加载app/initializers.

另一种可能的解决方案是以某种方式覆盖railties的数据库初始化程序:

# File railties/lib/initializer.rb, line 903
def database_configuration
  require 'erb'
  YAML::load(ERB.new(IO.read(database_configuration_file)).result)
end
Run Code Online (Sandbox Code Playgroud)

仅在以下情况下调用上述内容:在config.frameworks中定义了active_record.我不确定如何在Rails启动序列中尽早覆盖这一点.

也许第三个选项是从config.frameworks中删除:active_record,然后在应用程序初始化程序中创建连接?我担心这可能会产生很多意想不到的副作用.

希望有一些简单而明显的东西我没有找到,例如ActiveRecord功能允许我选择退出database.yml并以编程方式提供备用配置.

ruby activerecord yaml ruby-on-rails

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

Rails时间奇怪:"从现在起x天"

当用户注册我的某个网站进行免费试用时,我将其帐户到期时间设置为"14.days.from_now".然后在主页上我显示他们剩下多少天,我得到:

(user.trial_expires - Time.now)/86400 
Run Code Online (Sandbox Code Playgroud)

(因为一天有86400秒,即60*60*24)

有趣的是,它出现超过14,所以得到四舍五入到15.在控制台进行更仔细的调查,这将在未来发生两天(如果你知道我的意思).例如

>> Time.now
=> Fri Oct 29 11:09:26 0100 2010
>> future_1_day = 1.day.from_now
=> Sat, 30 Oct 2010 11:09:27 BST 01:00
#ten past eleven tomorrow

>> (future_1_day - Time.now)/86400
=> 0.999782301526931
#less than 1, what you'd expect right?

>> future_2_day = 2.day.from_now
=> Sun, 31 Oct 2010 11:09:52 GMT 00:00
>> (future_2_day - Time.now)/86400
=> 2.04162248861183
#greater than 2 - why?
Run Code Online (Sandbox Code Playgroud)

我想也许这与时区有关 - 我注意到从现在起1天的时间是在BST,从现在起2天的时间是在GMT.所以,我尝试使用localtime并得到了相同的结果!

>> future_2_day = 2.day.from_now.localtime
=> Sun Oct 31 11:11:24 0000 …
Run Code Online (Sandbox Code Playgroud)

ruby timezone ruby-on-rails activesupport

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

在方法调用中是否存在memoization约定?

我想避免在方法调用中重新评估值.直到现在,我这样做:

def some_method
  @some_method ||= begin
    # lot's of code
  end
end
Run Code Online (Sandbox Code Playgroud)

但它最终变得非常丑陋.在某些代码中,我看到如下内容:

def some_method
  @some_method ||= some_method!
end

private

def some_method!
  # lot's of code
end
Run Code Online (Sandbox Code Playgroud)

我不喜欢最后的爆炸(!),所以我想出了这个:

def some_method
  @some_method ||= _some_method
end

private

def _some_method
  # lot's of code
end
Run Code Online (Sandbox Code Playgroud)
  • 是否在下划线上有一个好的约定?
  • memoized/non-memoized对方法是否有其他约定?
  • 是否有一些惯例来记忆多行方法?

ruby coding-style memoization

15
推荐指数
3
解决办法
3957
查看次数

在只读对象中分配成员时出错

我正在研究worm_sim simulater,ubuntu,gcc,codeblocks IDE

traffic_source.h文件

class Traffic_source : public Buffer_owner, public Connector, public Addressee{
private:
    static unsigned int id_base;
    unsigned int id;
    unsigned int packet_size;
    unsigned int flit_size;
    double packet_generating_rate;
    int pkt_id;
    traffic_source_state ts_state;
    double* packet_to_destination_rate;
    Traffic_mode traffic_mode;
    int period;                // period for packet generation using trace_file
    ifstream trace_file;
    int trace_file_loop_cnt;   // how many times we have gone over the trace file so far
    bool trace_file_empty;
    ofstream trace_dump;       // trace file to dump out

    typedef struct Message {
        int timestamp;
        unsigned …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-errors variable-assignment

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

Ruby的"Open Classes"打破了封装吗?

在Ruby中,程序员可以更改预定义的类.所以一个非常糟糕的程序员可以做类似的事情:

class String
  def ==(other)
    return true
  end
end
Run Code Online (Sandbox Code Playgroud)

显然,几乎没有人会这么愚蠢,但是对于预定义类的更微妙的改变可能会导致已经工作的代码出现问题的想法在我看来违反了封装原则.

四个问题:

  1. 首先,这实际上是否违反了OO封装原则?
  2. 第二,作为一名程序员,我是否有办法在我的代码中保证我正在使用未修改版本的类?
  3. 第三,我是否应该出于任何原因在我的代码中"打开"类?
  4. 最后,在大规模的生产编码环境中如何处理这类事情?换句话说,编程行业的人们是否真的在其他人会使用的代码中执行此操作?或者即使他们不这样做,你如何确保一些插件作者在某个地方没有做到这样会破坏你程序的重要部分呢?

我知道这是一个有点主观的问题,但我真的想知道更广泛的编程社区对这个所谓的"猴子修补"的看法.

ruby encapsulation monkeypatching

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

x = x + 1和x ++的实现差异

我的教授最近说过虽然x = x + 1并且x++显然会给出相同的结果,但它们在JVM中的实现方式却有所不同.这是什么意思?编译器不是这样的:嘿,我明白x++我会把它切换到x = x + 1继续吗?

我怀疑在效率方面有什么不同,但如果在这些情况下装配会有所不同,我会感到惊讶......

java bytecode

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

检查Ruby中的字符串是否只包含正数

我是新手,想要知道是否可以使用或其他函数来检查字符串是否仅包含正数?

str = "123abcd"  #return false because it contains alphabets
str = "153"      #return true because of all numbers
Run Code Online (Sandbox Code Playgroud)

ruby string

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