小编com*_*ird的帖子

rubygem"参数列表太长"

我的问题是在运行一个使用Ruby密集的进程期间或之后,当我使用任何gem命令包括gem --version或gem install rake时,它会挂起一分钟然后给我这个错误:

$ gem list
/Users/username/.rvm/bin/gem: line 5: /Users/username/.rvm/bin/gem: Argument list too long
/Users/username/.rvm/bin/gem: line 5: /Users/username/.rvm/bin/gem: Unknown error: 0
Run Code Online (Sandbox Code Playgroud)

文件位于:第5行:/Users/username/.rvm/bin/gem

#!/usr/bin/env bash

if [[ -s "/Users/username/.rvm/environments/ruby-1.8.7-p334" ]] ; then
  source "/Users/username/.rvm/environments/ruby-1.8.7-p334"
  exec gem "$@"                # this is line 5
else
  echo "ERROR: Missing RVM environment file: '/Users/username/.rvm/environments/ruby-    1.8.7-p334'" >&2
exit 1
fi
Run Code Online (Sandbox Code Playgroud)

我发现再次运行的唯一方法是重新启动计算机,这显然是不可取的.我使用的是OSX 10.6.5

我花了很长时间试图找到有这个问题的其他人,并且没有成功.你知道为什么会这样吗?

rubygems

9
推荐指数
3
解决办法
9929
查看次数

为什么activerecord没有填充从create返回的项目中的自动递增列?

为什么rails不会在create中返回的项中填充自动递增列?有一个更好的方法吗?

在轨道,当你这样做a = Foo.create,然后a.id填充

但是如果你有一个通过创建的字段

def up   
  execute "ALTER TABLE my_table ADD COLUMN my_auto_incrementing_column INTEGER AUTO_INCREMENT not null UNIQUE KEY;"
end
Run Code Online (Sandbox Code Playgroud)

然后,当您使用create时,该字段不会出现.你也必须使用重装.

a = Foo.create
a.id # not nil
a.my_auto_incrementing_column # nil
a.reload
a.my_auto_incrementing_column # is now populated
Run Code Online (Sandbox Code Playgroud)

版本信息:

$ ruby -v
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-darwin14.5.0]
$ bundle exec rails -v
Rails 3.2.12
$ mysql --version
mysql  Ver 14.14 Distrib 5.6.26, for osx10.10 (x86_64) using  EditLine wrapper
Run Code Online (Sandbox Code Playgroud)

一些背景:

此代码适用于大型现有生产中的rails代码库,该代码库要求所有id字段都是UUID.auto_increment列不是主键,因为它是在我们发现新的外部集成伙伴无法使用我们现有的长唯一标识符(UUID)处理后添加的.

我们正在努力更新我们的ruby版本,但我们不想等待它作为解决此问题的方法.此外,在读取activerecord中的更改日志后,我仍然没有证据表明任何未来版本的ruby/rails将包含此问题的错误修复程序.

我要改进的代码:

class Foo < …
Run Code Online (Sandbox Code Playgroud)

ruby mysql activerecord ruby-on-rails

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

SonarQube 6.0 获取项目特定版本的代码覆盖率

我正在尝试编写一个小脚本

  1. 获取特定环境中所有微服务的版本(已解决)

  2. 对于每个项目/版本,获取该确切版本的声纳代码覆盖率。我在获取特定项目的确切版本的声纳覆盖范围时遇到问题。

我正在使用 sonarqube 6.0(根据我的 /api/server/version 端点)(我希望我们可以尽快升级到最新的 6.4,但这不在我的直接控制范围内,我不想等待)

我的问题是 - 我无法将数据绑定在一起,因为当我调用 /api/events 端点时,我只能返回项目的日期和覆盖范围,而不是版本。这是一个工作代码示例(不包括凭据和基本 URL)

我很乐意用任何语言解决这个问题 - ruby​​、python、php、java、js,无论什么都有效。

#!/usr/bin/ruby
require 'rest-client'
require 'json'
require 'ostruct'
require 'date'
require 'nokogiri'

projects_endpoint='/api/projects/'
time_machine_endpoint='/api/timemachine/'
events_endpoint='/api/events'

rc = RestClient::Resource.new(server_url, user, pass)
sonarqube_projects = JSON.parse(rc["#{projects_endpoint}index?format=json"].get, object_class: OpenStruct)

coverage_per_project = sonarqube_projects.map {|sq_project|
  # data shape: #<OpenStruct id="1687", k="foo-project", nm="foo-project", sc="PRJ", qu="TRK", lv="0.0.617", v=#<OpenStruct 0.0.617=#<OpenStruct sid="4197", d="2017-07-18T03:50:48+0000">>>
  project_name = sq_project.k
  url = "#{time_machine_endpoint}?format=json&resource=#{project_name}&metrics=coverage"
  events = JSON.parse(rc[url].get, object_class: OpenStruct)

  # data shape:
  # [#<OpenStruct cols=[#<OpenStruct metric="coverage">], cells=[#<OpenStruct d="2016-12-08T19:26:24+0000", …
Run Code Online (Sandbox Code Playgroud)

sonarqube sonarqube-web

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