小编Top*_*erH的帖子

RubyOnRails:如何在Rails控制台中使用辅助方法?

我的设置可能有问题:

irb(main):001:0> truncate("Once upon a time in a world far far away", :length => 17)
NoMethodError: undefined method `truncate' for main:Object
        from (irb):1
        from /usr/lib64/ruby/gems/1.9.1/gems/railties-3.2.8/lib/rails/commands/console.rb:47:in `start'
        from /usr/lib64/ruby/gems/1.9.1/gems/railties-3.2.8/lib/rails/commands/console.rb:8:in `start'
        from /usr/lib64/ruby/gems/1.9.1/gems/railties-3.2.8/lib/rails/commands.rb:41:in `<top (required)>'
        from script/rails:6:in `require'
        from script/rails:6:in `<main>'
Run Code Online (Sandbox Code Playgroud)

看起来我不能使用任何文本助手(在irb和rails控制台中).

我该怎么检查?

ruby ruby-on-rails irb actionviewhelper ruby-on-rails-3

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

如何在Watir-Webdrive中刷新页面?

如何使用watir-webdrive刷新页面?我尝试了他们在这里说的话:http://watirwebdriver.com/sending-special-keys/,但没有运气.

browser.send_keys :f5
Run Code Online (Sandbox Code Playgroud)

还有其他建议吗?谢谢

refresh watir watir-webdriver

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

Firefox中的Docker容器可以从另一个中的selenium访问

我有一个docker容器运行一个rails应用程序(我们称之为容器A)需要使用firefox作为后端使用watir webdriver进行一些抓取.

我在另一个容器(容器B)中安装了firefox,我希望能够传入容器A,例如:

Selenium::WebDriver::Firefox::Binary.path= $DOCKER_RUN_CONTAINER_A
Run Code Online (Sandbox Code Playgroud)

因此,每次watir启动firefox时,CONTAINER_A的新实例都会启动一个新的Firefox.

我知道容器使用端口进行通信很容易,但可执行文件怎么样?并且,顺便说一下,将firefox隔离在一个单独的容器中看起来是一个好的设计理念吗?

selenium watir watir-webdriver selenium-webdriver docker

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

在ruby中巧妙地将哈希数组转换为CSV

我需要在CSV文件中转换哈希数组.我发现的各种方法涉及在数组中插入哈希值:

class Array
  def to_csv(csv_filename="hash.csv")
    require 'csv'
    CSV.open(csv_filename, "wb") do |csv|
      csv << first.keys # adds the attributes name on the first line
      self.each do |hash|
        csv << hash.values
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

不幸的是,这种方法要求数组中的每个元素都是完整的,例如当我有这个数组时,它甚至不会返回有效的csv:

myarray = [
  {foo: 1, bar: 2, baz: 3},
  {bar: 2, baz: 3},
  {foo: 2, bar: 4, baz: 9, zab: 44}
]
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来创建一个找到所有可能的标头的csv,并按正确的顺序分配值,在需要的地方添加空格.

ruby csv arrays

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

没有被/\s /转义的空格

我正在处理一些以奇怪方式表现的字符串.

在ruby中的正则表达式中,/ s不识别某些空格.

"175  75   16C  101/99    R".gsub( /\s/ , 'x' )
 => "175 x75  x16C x101/99   xR"
Run Code Online (Sandbox Code Playgroud)

预期的结果是每个空格都转换为'x'

我试图强制编码为UTF-8到字符串,但它也没有工作.我需要一个正则表达式匹配我的字符串中的每种空格并将它们转换为常规空格.

编辑:

str.encode('utf-8').chars.each { |c| puts c.ord }     
49
55
53
160
32
55
53
160
160
32
49
54
67
160
32
49
48
49
47
57
57
160
160
160
32
82
Run Code Online (Sandbox Code Playgroud)

ruby regex whitespace

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

Sidekiq在localhost上寻找redis而不是远程

我在我的sidekiq初始化程序中有这个:

Sidekiq.configure_server do |config|
  config.redis = { url: "redis://#{ENV['REDIS_PORT_6379_TCP_ADDR']}:#{ENV['REDIS_PORT_6379_TCP_PORT']}/0", namespace: 'Tyresearch' }
end
Run Code Online (Sandbox Code Playgroud)

当我启动sidekiq时,它在正确的主机和端口上正常启动:

INFO: Booting Sidekiq 3.2.4 with redis options {:url=>"redis://172.17.0.6:6379/0", :namespace=>"Tyresearch"}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试启动工作人员或访问sidekiq管理面板时,我收到此错误:

Redis::CannotConnectError at /sidekiq
Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED)
Run Code Online (Sandbox Code Playgroud)

因此,由于某种原因,它现在尝试连接127.0.0.1而不是172.17.0.6

这是我的环境(该应用程序由流浪者管理的链接的docker容器组成)

{"ADMIN_EMAIL"=>"user@example.com",
 "ADMIN_NAME"=>"First User",
 "ADMIN_PASSWORD"=>"changeme",
 "BUNDLE_BIN_PATH"=>
  "/opt/rubies/ruby-2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.7.4/bin/bundle",
 "BUNDLE_GEMFILE"=>"/var/www/Gemfile",
 "COLUMNS"=>"135",
 "GEM_HOME"=>"/var/bundle/ruby/2.1.0",
 "GEM_PATH"=>"",
 "GMAIL_PASSWORD"=>"Your_Password",
 "GMAIL_USERNAME"=>"Your_Username",
 "HOME"=>"/home/web",
 "HOSTNAME"=>"223b7ef7396f",
 "LESSCLOSE"=>"/usr/bin/lesspipe %s %s",
 "LESSOPEN"=>"| /usr/bin/lesspipe %s",
 "LINES"=>"43",
 "LS_COLORS"=>
  "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=
01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:
*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=0
1;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.
flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:
*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:",
 "NODE_PATH"=>"/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript",
 "PATH"=>
  "/var/bundle/ruby/2.1.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/rubies/ruby-2.1.2/bin",
 "POSTGRES_ENV_PASSWORD"=>"password",
 "POSTGRES_ENV_USERNAME"=>"postgres",
 "POSTGRES_ENV_VERSION"=>"9.3",
 "POSTGRES_NAME"=>"/tyresearch/postgres",
 "POSTGRES_PORT"=>"tcp://172.17.0.5:5432",
 "POSTGRES_PORT_5432_TCP"=>"tcp://172.17.0.5:5432",
 "POSTGRES_PORT_5432_TCP_ADDR"=>"172.17.0.5",
 "POSTGRES_PORT_5432_TCP_PORT"=>"5432",
 "POSTGRES_PORT_5432_TCP_PROTO"=>"tcp",
 "PWD"=>"/var/www",
 "REDIS_NAME"=>"/tyresearch/redis",
 "REDIS_PORT"=>"tcp://172.17.0.6:6379",
 "REDIS_PORT_6379_TCP"=>"tcp://172.17.0.6:6379", …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails redis vagrant sidekiq docker

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