小编The*_*tix的帖子

SQL将每条记录的列添加到一起

说实话,我不知道SQL但是我不想要答案,我想自己解决.

这是问题:

编写SQL查询以计算每个团队的目标数.

玩家

id name team_id goals
1 Joel 1 3
2 Ed 2 1
3 Simon 2 4
Run Code Online (Sandbox Code Playgroud)

球队

id name
1 New Zealand
2 London
Run Code Online (Sandbox Code Playgroud)

我要求的是一个信息箭头,可以让我解决问题.

我试过看自己,但我甚至不知道正确的术语来问这个问题,谷歌搜索'写sql为每一行添加字段'似乎只是回归添加列或插入.

sql

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

是否可以在Rust的程序宏中存储状态?

是否可以构建一个不输出任何东西,而是存储状态以建立列表的宏,然后再构建一个实际使用该数据的宏?

例如:

trait SomeTrait {}

#[derive(mark)]
struct Person {}

impl SomeTrait for Person {}

#[derive(mark)]
struct Item {}

impl SomeTrait for Item  {}

#[derive(mark)]
struct Object {}

impl SomeTrait for Object {}

create_mapper! // this then outputs the below function
//assuming for the fact that data is loaded correctly before this macro is used

fn select_item(kind: String) -> impl SomeTrait {
    match kind {
        "person" => Person,
        "item" => Item,
        "object" => Object,        
    }
}
Run Code Online (Sandbox Code Playgroud)

rust rust-macros rust-proc-macros

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

Rspec如何判断let块是否已经定义?

在 Rspec 中,我想利用 usingsuper()来调用已定义的let块(如果存在)或设置新值(如果不存在),我想在组中使用它,shared_example但我只是找不到如何执行此操作。

我尝试过检查是否@some_let存在,我尝试过检查是否:some_let拥有 的超级方法kernel,但它们都没有提供任何有用的东西;我无法访问instance_methods,或者instance_method因为 Rspec 不允许我访问,并且在互联网上搜索方法尚未找到答案。

我希望能够做这样的事情:

shared_examples 'a shared example' do
  let(:some_let) { let_exists?(:some_let) ? super() : some_new_value }
end
Run Code Online (Sandbox Code Playgroud)

有类似的方法let_exists?或类似的效果吗?

ruby rspec rspec-rails

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

在rackup文件中设置服务器选项

我正在尝试设置服务器选项 IE 端口、主机等,但我在文件中找不到任何有关如何执行此操作的信息config.ru

我尝试将配置选项放入哈希中,然后执行以下操作:

configure { set :server, config[:server][:handler].to_sym }
Rack::Handler.default.run(App, config[:server])
Run Code Online (Sandbox Code Playgroud)

还尝试过:

Rack::Handler::pick(['puma']).run App, config[:server]
Run Code Online (Sandbox Code Playgroud)

乃至:

configure { set :server, config[:server].delete(:handler).to_sym }
Run Code Online (Sandbox Code Playgroud)

这样处理程序就不会出现在服务器配置哈希中,并且仍然......

没有骰子。

配置哈希是:

{
  :handler => "puma", 
  :host    => "127.0.0.1", 
  :port    => 3000, 
  :threads => "0:16", 
  :verbose => true
}
Run Code Online (Sandbox Code Playgroud)

但哈希配置只是被忽略,我将端口设置为,但应用程序默认3000加载。8080

它还会出现关于不存在run命令的错误(显然,我没有使用它)。

因此解决这个问题也是一个不错的选择。

我确信有一种正确的方法可以做到这一点,但为什么很难找到它的记录呢?我已经在谷歌上搜索了尽可能多的搜索词,但没有任何完全正确的结果。

ruby rack config puma server

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

关于红宝石哈希的一个令人恼火的问题

为什么ruby有时会将哈希解释为代码块?

例如,我有一个名为'required'的函数,它接受一个哈希,所以我这样做:

required { base_uri: String, endpoints: String, destination: String, credentials: Hash}
Run Code Online (Sandbox Code Playgroud)

它认为它是一块代码和错误unexpected tSYMBEG.

修复此问题的唯一方法是在其周围放置括号,使其显示为:

required({ base_uri: String, endpoints: String, destination: String, credentials: Hash})
Run Code Online (Sandbox Code Playgroud)

然后它开始将其作为哈希读取(就像我想要的那样).

我并不担心在哈希周围放置括号,令人恼火的是它不一致,有时候会有效,有时则不然.

这是怎么回事?

ruby syntax hash

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

用于扫描 ruby​​ 代码文件以查找重复或相似代码块的工具

有没有办法扫描 ruby​​ 文件中的重复代码?

我有将近 30 个文件,每个文件在 200-1000 行代码之间,我需要优化和重构它们。

我正在考虑将重复的代码移动到一个可以在所有文件中使用的实用程序类。

是否有某种扫描工具可以轻松查找和标记重复或相似的代码块?

或者我只需要咬住众所周知的子弹并手工完成?

ruby dry

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

对于 axum,如何为处理程序设置标头

我似乎找不到如何为响应设置标头。

我一直在寻找如何做到这一点,但还没有找到一个简单的方法来做到这一点。

特别强调标content-type头,如何从响应处理程序设置标准标头和自定义标头,记住我已经可以做到thing.into_response()

http-headers rust response-headers rust-axum

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

Rspec和Sinatra只是对我不起作用,但我希望他们这样做

我以前从未使用过Sinatra,也从来没有手动配置过Rspec(总是使用Rails的预写脚本),但是我想尝试一下。

但是我遇到了麻烦,我设法使RSpec可以工作,但是我遇到了错误,只是让它识别Sinatra的方法。

我想知道改用它是否更好Rack::Test

我当前的问题是atm:

1)rake失败Don't know how to build task 'default'

2)当我使用rspec它失败与undefined method get for #<RSpec::ExampleGroups::MySinatraApplication:0

现在显然我在做错事,但是我不知道该怎么办。我正在跟踪一些发现的问题,但是很好,我只是做得不好。

RakeFile:

require 'rspec/core/rake_task'


RSpec::Core::RakeTask.new do |task|
  task.rspec_opts = ['-c', '-f progress', '-r ./spec/spec_helper.rb']
  task.pattern = './spec/**/*_spec.rb'
end
Run Code Online (Sandbox Code Playgroud)

spec_helper.rb

require 'rspec'
require 'rack/test'

RSpec.configure do |conf|
  conf.include Rack::Test::Methods
end
Run Code Online (Sandbox Code Playgroud)

app_spec.rb

ENV['RACK_ENV'] = 'test'

require '../../myapp'
require 'rspec'
require 'rack/test'

describe 'My Sinatra Application' do

  include Rack::Test::Methods

  def app
    Sinatra::Application
  end

  it "says hello" do
    get '/' …
Run Code Online (Sandbox Code Playgroud)

ruby rspec sinatra

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

如何在 Ruby 中关闭 $stdout 和 $stderr

是否可以关闭 $stdout 和 $stderr 并且不将其重定向到文件;只需将其关闭,这样它就不会在任何地方打印任何内容?

我已经尝试过以下代码,但它只是错误error: Invalid argument

$stderr = IO.new(0,"w")
$stdout = IO.new(0,"w")
Run Code Online (Sandbox Code Playgroud)

ruby stdout stderr

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

在红宝石中,什么时候是一块不是一块?

抛开笑话,我有一个奇怪的情况,我有一些代码:

def remotes(form,remotes)
  personalised_form = form.dup
  remotes.each do |ident,remote|
    object = yield(ident)
    result = remote.call(object)
    insert_into_(personalised_form,ident,result)
  end
  personalised_form
end
Run Code Online (Sandbox Code Playgroud)

而且我看到它是否如此工作:

pp remotes(forms,remotes) do |ident|
  case(ident)
    when :get_assets
      '@Userobject'
  end
end
Run Code Online (Sandbox Code Playgroud)

问题是,ruby似乎认为我没有将一个块传递给该remotes函数.

为什么红宝石坚持认为我没有通过一个街区?(它no block given (yield) (LocalJumpError)具体给出了).

认为它不相关,遥控器是包含键和Proc的散列,而形式只是一个特定结构的散列,其中使用ident插入proc的结果来定位正确的插入点

ruby block proc

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