说实话,我不知道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为每一行添加字段'似乎只是回归添加列或插入.
是否可以构建一个不输出任何东西,而是存储状态以建立列表的宏,然后再构建一个实际使用该数据的宏?
例如:
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) 在 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?或类似的效果吗?
我正在尝试设置服务器选项 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有时会将哈希解释为代码块?
例如,我有一个名为'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 文件中的重复代码?
我有将近 30 个文件,每个文件在 200-1000 行代码之间,我需要优化和重构它们。
我正在考虑将重复的代码移动到一个可以在所有文件中使用的实用程序类。
是否有某种扫描工具可以轻松查找和标记重复或相似的代码块?
或者我只需要咬住众所周知的子弹并手工完成?
我似乎找不到如何为响应设置标头。
我一直在寻找如何做到这一点,但还没有找到一个简单的方法来做到这一点。
特别强调标content-type头,如何从响应处理程序设置标准标头和自定义标头,记住我已经可以做到thing.into_response()。
我以前从未使用过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) 是否可以关闭 $stdout 和 $stderr 并且不将其重定向到文件;只需将其关闭,这样它就不会在任何地方打印任何内容?
我已经尝试过以下代码,但它只是错误error: Invalid argument
$stderr = IO.new(0,"w")
$stdout = IO.new(0,"w")
Run Code Online (Sandbox Code Playgroud) 抛开笑话,我有一个奇怪的情况,我有一些代码:
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的结果来定位正确的插入点