text:
[Collection library]  the keyword "List Should Not Contain Duplicates" accepts scalar variable not list variable

Hi all,
I am using RF to practice and there is a robot file as below
*** Settings ***
Library     Collections

*** Variables ***

*** Test Cases ***
#Example
#    ${index} =    Find Index    baz    @{LIST}
#    Should Be Equal    ${index}    ${1}
#    ${index} =    Find Index    non existing    @{LIST}
#    Should Be Equal    ${index}    ${-1}

Check Value
    @{list}=    Create List     foo     bar     bar
    List Should Not Contain Duplicates      @{list}

*** Keywords ***

As the Collection library documentation, the keyword "List Should Not Contain Duplicates" gets 1 argument - "list" to check. But when running this file, I got an issue
Keyword 'Collections.List Should Not Contain Duplicates' expected 1 to 2 arguments, got 3.
If I change "@{list}" to "${list}", the issue is gone away.
Had reading user guide, the scalar and list variable are stored in the same internal storage, from what I understand, these 2 kinds of variables have the same behavior when working with a list. So, why does the scalar works well in the code above BUT list?
Please share your ideas and correct for me If I am wrong.
Thanks

This ought to be explained in the User Guide:
http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#list-variables
If you have further questions, please send them to support forums listed at http://robotframework.org. This issue tracker is targeted for bug reports and enhancement requests. That said, if the documentation in the User Guide is not clear, submitting issues about enhancing it is totally fine. Do you have ideas how the docs could be enhanced?

authors: learningandworking pekkaklarck

repo: robotframework/robotframework


text:
Choose File is not working on Safari 12

Hi, I have the following scenario;
macOs High Sierra
Safari 12
RF 3.1.2
RF-S2L 3.0.0
RF-SL  3.3.1
selenium 3.141.0

I'm not able to upload files in a form. My tests running on chrome uses the keyword:
Choose File   <locator>    <file_path>

The error I got is:
InvalidArgumentException: Message: One or more files could not be selected.

This tracker is for bug reports and enhancement requests related to Robot Framework core only. Issues related to specific library should be submitted to their issue trackers. Questions are best asked on support forums such as mailing list and Slack listed at http://robotframework.org.

Notice that if the same test works with Chrome, the problem is most likely in Safari driver.

source: gharchive/issue

authors: pekkaklarck ramonmedeiros

license_type: permissive

license_source: github-api


text:
Update screenshots in User Guide

We should handle FIXME: new screenshots of report / log. statement away from the user guide: See: https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#report-file

Maybe renew together with PR #4190 : Draft: Dark mode for report and log #4190

Yeah, screenshots need to be updated. Especially log screenshot is badly outdated.

I think UG contains also example log/report files. Need to update them as well.

authors: pekkaklarck rikerfi


text:
MapSingleton, MapClass of Robotlegs not recognised in Haxe

@peteshand
Hi
I am stuck at a very crucial point and seems like a dead end for me.
I have got many robotlegs mappings in my as3 code like :
m_context.contextInjector.mapSingleton(abc);
m_context.contextInjector.mapSingleton(xyz);
m_context.contextInjector.mapClass(test, test1);
m_context.contextInjector.mapClass(test2, test3);
contextInjector above returns IInjector.
In as3 everything works fine, but in Haxe i get the following error.
Error : IInjector has no field mapSingleton
Same error for mapClass : IInjector has no field mapClass
Haxe does not recognise mapSingleton, mapClass etc… PLEASE HELP

@peteshand
Awaiting your kind response at the earliest. Thanks

Hey there
It could be a DCE (dead code elimination) issue. Are you using openfl, is so can you share you project.xml / application.xml file, or check that you have dce set to 'no'
<!--<haxeflag name="-dce full"/>-->
<!--<haxeflag name="-dce std" />-->
<haxeflag name="-dce no"/>

If that is not the issue can you provide the whole class where you are having problems.

authors: kiranzz peteshand

repo: robotlegs/openfl-robotlegs-framework

license: mit

license_source: bigquery


text:
Update CI pipeline

Currently AppVeyor builds are broken. I just disabled them since their maintenance is quite demanding since we have to rely on the binary installers which sometimes they are not promptly updated.
I would recommend to switch to a windows stage in Travis. In this way single install.sh and script.sh have to be maintained, and will be used in both windows and macOS (actually, script.sh can be used also in linux stages).
Referring to .ci/install.sh, I don't remember honestly why we need icub-main and icub-firmware-shared dependencies. Maybe now just yarp would suffice. In the windows case, we should check what is the best way to install dependencies.
As reference, have a look at https://github.com/diegoferigo/blockfactory-demo-ros/blob/master/.travis.yml or https://github.com/robotology/blockfactory/blob/master/.travis.yml.

cc @lrapetti @Yeshasvitvs

repo: robotology-playground/wearables


text:
iCubNottingham01 migration to MCV6

PR for Nottignham01 robots

propagated to MotorControlVersion 6 (was MCV 4)
fixed a few mistakes

ready for PR

hi @marcoaccame  I performed the changes required and propagated them to the repo. thanks to @Nicogene for support in pushing.
can you review the current version.
cheers.

Hi @simeonedussoni, I will have a look shortly

source: gharchive/pull-request

authors: marcoaccame simeonedussoni

repo: robotology/robots-configuration


text:
Difference between dto and core?

Hey guys, can you tell me the difference between dto and core in root directory and type directory? I'm trying to use cassiopeia but don't know which one I should call.
Besides, I want to know how to obtain Event data in a Match?
Thank you.

Absolutely. The dto objects fit the Riot API specifications exactly, which means that we use the exact same names and datatypes in the dto layer as Riot does. Riot essentially returns dictionaries when you hit their service, and we process those dictionaries into python objects (so you can do match.matchId rather than match['matchId'].
A good example of the difference between the core and dto layer can be seen from how we implemented match.participants in each. In the dto layer, match.participants and match.participantIdentities return exactly what the Riot API returns. However, we feel like the information contained in those two objects should be part of the same object, so in the core layer we have wrapped them both up in the match.participants object (i.e. both match.participants[0].name (summoner name) and match.participants[0].runes are inside the same object).
In addition, in the core layer we have added extra functionality to some objects. For example, match.participants["Dyrus"] is valid in addition to match.participants[0], which just makes it easy to access the participant you want on the first try (rather than having to loop through match.participants until you find a summoner with name "Dyrus").  Another example can be found in the recently added riotapi.get_champion_masteries function. The dto renders a list of Champion Mastery objects (one for each champion), because that's what Riot returns -- a list.  However, we think that you might just want to look up the champion mastery object for e.g. Annie, so in the core layer we made the list into a dictionary. Now you can do riotapi.get_champion_masteries()[annie] (where annie is a Champion object from riotapi.get_champion_by_name("Annie") and easily get just the champion mastery object for just Annie from the "list" of all champion masteries.  Finally, one of my favorite things about the core layer is being able to access a player's participant frame (within Match) via the participant object; in the dto layer, you have to lookup the participant ID first, then go through match.timeline.frames and look through a list for the participant's frame in each Frame object.
We think the core layer is best because it makes using the Riot API much easier. The dto still helps a lot (e.g. automatic rate limiting), but it doesn't make working with the data itself any easier. I rarely ever use the dto layer myself, and I can legitimately only think of two one use-case when you might want to do so. The first is if you really care about the speed of the application itself. This might sound big to you, but does it really matter if your code takes 12 second vs. 10 seconds or 120 milliseconds vs 100 milliseconds? Those 2 seconds (or 20 milliseconds) you potentially save running the code is almost always wayyyy less than the extra time it takes you to write the dto code (because it is much messier and less intuitive that the core code). On rare occasions, I will write core code while I write and test my code to make sure it is works correctly, and then once I know it works I will convert it to dto code to make it 10% faster.  However, if you really care about speed, you probably do not even want to use dto objects, but instead use the dictionaries sent straight from Riot. That would not be enjoyable at all though, and it gets rid of all the great things about Cass.
Let us know if you still have questions.

You can access the Event data via the Match object, e.g.
summoner = riotapi.get_summoner_by_name("dyrus")
match_id = riotapi.get_match_list(summoner, seasons=Season.season_5)[0].id
match = riotapi.get_match(match_id)

now you can access the timeline and the frames in match, which hold the event data. Take a look at the docs.

I just realized I did not answer your question correctly:

can you tell me the difference between dto and core in root directory and type directory?

In Cass, there are two "layers", dto and core, which talked about above. However, the difference between the dto and core objects in the root directory vs. in the type directory is that in the root directory, the dto and core files contain api calls, whereas in the type directory, the dto and core files contain the actual objects that get rendered from those api calls. If you look in the files (and at the file names) closely, I think it will make sense.
And thank you @sbrodehl for answering the rest of the question as well. @simoncos once you have the match, you can access events by (for example) match.timeline.frames[0].events, which will give  you a list of Event objects.

Dear @jjmaldonis , as for the first question, there was some ambiguity in my quesion. Your answer in the first reply is exactly what I want to know.
As for the second question, firstly thank you @jjmaldonis @sbrodehl for the answers. Actually my goal is to do some analysis about the match data. To be more specific, I want to know that in a certain match, which champion killed which champion for how many times, and which champion assisted in the events. This means I need all the Event data in matches. I've tried in the Riot's API, but found returned results like https://na.api.pvp.net/api/lol/na/v2.2/match/2069455529?includeTimeline=1&api_key=XXX didn't contain Event objects.
I've tried the same thing in Cass following your posts, and found that the events list is null. Does this mean that not all matches have events data and thus I cannot reach my goal?

The includeTimeline parameter doesn't accept booleans specified as 0/1. You'll have to make a call to https://na.api.pvp.net/api/lol/na/v2.2/match/2069455529?includeTimeline=true&api_key=XXX instead to find that there are Event objects.
When I access this match with Cass, I find that the events list is properly filled in. One such event can be found using riotapi.get_match(2069455529).timeline[1][0].
You may find that some of the Match Frame objects don't contain any Events (particularly the first often does not), but you should be able to get the data you need searching over all the Frames' Event lists.

One should note that not all matches have timeline data. If timeline data is requested, but doesn't exist, then the response won't include it.
I'm not sure what kind of games don't have timeline data, usually ranked games do.

Thanks a lot guys!

authors: jjmaldonis robrua sbrodehl simoncos

repo: robrua/cassiopeia


text:
Albatross policy management

An administrator should be able to see and adjust policies (Vmm_core.Policy.t) for each user.

I guess a first step would be to display such a policy..
  type t = {
    vms : int;
    cpuids : IS.t;
    memory : int;
    block : int option;
    bridges : String_set.t;
  }

Which means: the number of unikernels/vms that are allowed to be executed at the same time. Which CPUids are accessible (a set of numbers, each unikernel is sticky on a single CPU), the amount of memory in MB, the amount of block storage in MB, and a set of names of bridges that are available.
The CPUids is a bit weird, I guess we could as well say "how many CPUs" -- since someone may have 10 unikernels run on a single CPU, and then another one that has a high load on a different one. But exposing the IDs to a client isn't necessarily what we want to do -- but that's likely for a later step, that mollymawk has some heuristics which CPU to pick ;)

done in #57

repo: robur-coop/mollymawk


text:
[WIP] Add timestamp to builder-client observe output

I experienced a builder job that timed out, but the client observe output said it had finished. Because there were no timestamps I couldn't tell the timings of the messages I had received in client observe when I came back to it later.
TODO:

[ ] Verify ASN.1 backwards compatbility
[ ] Have backwards compatibility between server and client - perhaps with a new Observe_with_timestamp client command ?
[ ] A flag in the client command line interface to enable/disable timestamps

This looks good to me.
I don't think that "A flag in the client command line interface to enable/disable timestamps" is actually needed - the usefulness of timestamps is there (and these timestamps are also preserved for later already.
"Have backwards compatibility between server and client - perhaps with a new Observe_with_timestamp client command ?" I'd phrase this differently: an old client should continue to receive and be able to print Output. A new client (talking to a new server) should display the timestamp. Which also means: an old server talking to a new client will fail (since n = Builder.client_cmds is not true). A new server should be able to talk to new clients (indeed, Output_timestamped is constructed and send over the wire). A new server should be able to talk to an old client (here, the server needs to be lax about client_cmds (if 9 it should be fine) by emitting Output (no timestampts), so the old client has the possibility to decode them successfully.

Thanks, from reading the code, the ASN grammar is indeed compatible -- since it is a sequence, now with an added optional element that does not need to be present. From the worker-server communication, the sequence without optional timestamp is being used.

I rebased on main (since #16 was merged) and added a commit to support older clients. This requires keeping track of client (and worker) version numbers. The code doesn't enforce client/worker protocol distinction. Ideally, I think it should be split up to enforce this.

The code doesn't enforce client/worker protocol distinction. Ideally, I think it should be split up to enforce this.

Maybe we should open an issue about that, and leave it for future work? :) From a security perspective, it should not matter. But from a code complexity perspective it would be nice to distinguish the different state machines.

authors: hannesm reynir

repo: roburio/builder

license: ISC


text:
Authentication via Keycloak

Please make it possible for us to authenticate via our self hosted Keycloak. :)

Hey @ath88 . Since Keycloak is a self hosted solution, it can only be used in self hosted environment hence cannot be connected to the Robusta SaaS.

I believe your conclusion is wrong. Sure it's not an easy fix, but allowing organizations to specify their own OpenID Connect Identity Provider should indeed be possible.
How did you get to your conclusion that it cannot be done? :)

Hey @ath88 , sure, I'll explain.
Robusta UI authentication is based on Supabase.
After reading the instructions here:
https://supabase.com/docs/guides/auth/auth-keycloak#add-login-code-to-your-client-app
And checking out the Authentication providers page, and opening Keycloak:

My conclusion is that Keycloak can only be used once, and not for each organization.
However, in the self hosted version of Robusta, it is probably possible because the self-hosted Robusta has a copy of Supabase built-in:  https://docs.robusta.dev/master/user-guide/self-hosting.html

I understand the issue, but I still insist that it has nothing to do with Keycloak being self hosted, but rather a technical limitation of Supabase. :)
I'll be opening an issue with gotrue to try and make it possible to configure multiple Identity Providers of the same type. Once that is possible, it'll be possible to allow to authenticate against your clients identity providers.

repo: robusta-dev/robusta

license: MIT


text:
Fix PIL attribute error on list and lambda column representations

Closes #216

Codecov Report

Merging #218 (7e69079) into dev (8107cbf) will not change coverage.
The diff coverage is 75.00%.

@@           Coverage Diff           @@
##              dev     #218   +/-   ##
=======================================
  Coverage   85.44%   85.44%
=======================================
  Files          47       47
  Lines        3127     3127
  Branches      612      612
=======================================
  Hits         2672     2672
  Misses        340      340
  Partials      115      115

Flag
Coverage Δ

unittests
85.44% <75.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

meerkat/columns/list_column.py
58.92% <50.00%> (ø)

meerkat/columns/lambda_column.py
80.18% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8107cbf...7e69079. Read the comment docs.

authors: codecov-commenter seyuboglu

repo: robustness-gym/meerkat


text:
Str graphemes

This is mostly work done by @snprajwal in https://github.com/roc-lang/roc/pull/4286 who asked for some help with Str.graphemes on zulip.
discussion: https://roc.zulipchat.com/#narrow/stream/316715-contributing/topic/Missing.20Str.2Egraphemes
This pr reworks strGraphemes() and adds some passing zig tests.  I think more tests are needed but i'm not sure what types of tests to add.
The tests check these 4 cases currently:
1. "" -> []
2. "ab" -> ["a", "b"]
3. "éå" -> ["é", "å"]
4. "6🤔å" -> ["6", "🤔", "å"]

Great work @travisstaloch :rocket:
Note for GitHub: Closes #4286

That was quick! CI will fail though, bitcode.rs needs to match.

It's OK I managed to do it from the PR

It's OK I managed to do it from the PR

Oh neat. Didn't know you could make a commit like that. I didn't see you'd done that until after i pushed a fix. Hope I didn't mess anything up.

Oh yeah we require signed commits. Just noticed the "blocked" message now, didn't think to check.
Here are some links about it. I won't be around for the next few hours but you can ask on Zulip.
https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits
https://superuser.com/questions/397149/can-you-gpg-sign-old-commits

Oh yeah we require signed commits. Just noticed the "blocked" message now, didn't think to check. Here are some links about it. I won't be around for the next few hours but you can ask on Zulip.

Thanks. Wondered about that. I ran this command.  Will try to re-push and see if they're signed.
git config --global commit.gpgsign true

It would be good to squash the latest two fixup commits with your original commit to ensure git bisect doesn't break. Although if @brian-carroll will be squashing the PR itself, then it shouldn't really matter

Ok I think i figured out how to setup commit signing. Does the latest commit look ok?

Yep it is signed, but you seem to have not added your public key to GitHub. See https://docs.github.com/en/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account

Ok i just pushed again. Not seeing 'verified' so that seems to have worked. Thanks @snprajwal for the tip.

I also just squashed the commits. So i'm hoping that everything is signed now.

Ok thats better. I somehow lost the last two commits during squash. Sorry for all the noise.

One more thing i'd like to do is combine the tests for countGraphemeClusters() with the new tests i've added. I'd like to do this by adding a test helper which checks the count and the clusters, something like this:
test "graphemes: emojis, utf8, and ascii characters" {
    try testGraphemes("6🤔å🤔e¥🤔çpp", 10, .{"6", "🤔", "å", "🤔", "e", "¥", "🤔", "ç", "p", "p"});
}

It appears that @snprajwal's commit isn't signed and that's what is blocking merging.  I attempted to preserve his commit but i'm guessing this is blocked because that was before i had signing setup properly on this machine.
Does this make sense? Any suggestions?

Any suggestions?

git rebase -i HEAD~1
Add exec git commit --amend --no-edit -S after my commit
git push --force

Guessing this should fix the issue

I attempted to preserve his commit

Co-authored commits must be signed by the primary author, as a commit can be signed with only one GPG key

looks like they are both verified now.  thanks again for the assist with signing @snprajwal!

Thank you both for the great work on this! 😍

Closes #4193

authors: brian-carroll rtfeldman snprajwal travisstaloch

repo: roc-lang/roc


text:
fix minio removeobjects

现象：存储 minio， post 带有多张图片，删除post，多张图片仍在minio内，无法删除
参考官方用法：
https://github.com/minio/minio-go/blob/master/examples/s3/removeobjects.go
pr 修复了 minio 多文件删除的问题

试试下面👇这种改法是否可行， 如果可行的话，就按这种改法，可以省一次协程的创建(Minio-sdk 内部实现还新建了两协程，就为一次删除操作，搞那么多协程，太他喵奢侈了，真是不当家不知柴米油盐贵，协程再便宜那也是资源啊， 协程魔怔了属于是😂)
func (s *minioServant) DeleteObjects(objectKeys []string) (err error) {
	objectsCh := make(chan minio.ObjectInfo, len(objectKeys))

	resCh := s.client.RemoveObjects(context.Background(), s.bucket, objectsCh, minio.RemoveObjectsOptions{})
	for _, objectKey := range objectKeys {
		objectsCh <- minio.ObjectInfo{
			Key: objectKey,
		}
	}
	close(objectsCh)

	// 宽松处理所有错误，只记录最后一次发生的错误
	for result := range resCh {
		if result.Err != nil {
			err = result.Err
		}
	}
	return
}

我在本机minio上试了一下，这种改法是有效的。我先合并你的改法，再进行优化一下。

试试下面👇这种改法是否可行， 如果可行的话，就按这种改法，可以省一次协程的创建(Minio-sdk 内部实现还新建了两协程，就为一次删除操作，搞那么多协程，太他喵奢侈了，真是不当家不知柴米油盐贵，协程再便宜那也是资源啊， 协程魔怔了属于是😂)

func (s *minioServant) DeleteObjects(objectKeys []string) (err error) {
	objectsCh := make(chan minio.ObjectInfo, len(objectKeys))

	resCh := s.client.RemoveObjects(context.Background(), s.bucket, objectsCh, minio.RemoveObjectsOptions{})
	for _, objectKey := range objectKeys {
		objectsCh <- minio.ObjectInfo{
			Key: objectKey,
		}
	}
        // 记得一定要close，否则会被卡死，退出不了函数，造成资源泄露！！！
	close(objectsCh)

	// 宽松处理所有错误，只记录最后一次发生的错误
	for result := range resCh {
		if result.Err != nil {
			err = result.Err
		}
	}
	return
}

棒！ 优化的很好

authors: alimy cute-angelia

repo: rocboss/paopao-ce


text:
Add change to work with several folders within folder.

Referring to issue #1

I'm on it since I'm also adding the option to work with .zip folder when a checkbox is clicked. I know it might be getting a lot wider in features but I just felt that also important.

@rocheio I have done the changes you have requested, Once these changes are merged I'll do a PR for the things I commented before (working with .zip) files. I do it in this way in order no to mess with commits.
Regards.

repo: rocheio/foldercompare


text:
torch的EfficientNet转RK失败，是Identity算子不支持吗？

log如下，查了下OP手册torch没包括Identity算子，是这个原因吗？
I Start importing pytorch...
D import clients finished
W Pt model version is 1.6(same as you can check through ), but the installed pytorch is 1.8.0. This may cause the model to fail to load.
E Catch exception when loading pytorch model: ./zoo/ef0.pt!
E Traceback (most recent call last):
E   File "rknn/api/rknn_base.py", line 376, in rknn.api.rknn_base.RKNNBase.load_pytorch
E   File "rknn/base/RKNNlib/RK_nn.py", line 157, in rknn.base.RKNNlib.RK_nn.RKnn.load_pytorch
E   File "rknn/base/RKNNlib/app/importer/import_pytorch.py", line 129, in rknn.base.RKNNlib.app.importer.import_pytorch.ImportPytorch.run
E   File "rknn/base/RKNNlib/converter/convert_pytorch_new.py", line 3971, in rknn.base.RKNNlib.converter.convert_pytorch_new.convert_pytorch.load
E   File "/home/zmy/miniconda3/envs/rk/lib/python3.6/site-packages/torch/jit/_serialization.py", line 161, in load
E     cpp_module = torch._C.import_ir_module(cu, str(f), map_location, _extra_files)
E RuntimeError:
E Unknown type name 'NoneType':
E Serialized   File "code/torch/torch/nn/modules/linear/___torch_mangle_3484.py", line 6
E   training : bool
E   _is_full_backward_hook : Optional[bool]
E   def forward(self: torch.torch.nn.modules.linear.___torch_mangle_3484.Identity) -> NoneType:
E                                                                                ~~~~~~~~ <--- HERE
E     return None
E Please feedback the detailed log file <log_feedback_to_the_rknn_toolkit_dev_team.log> to the RKNN Toolkit development team.
E You can also check github issues: https://github.com/rockchip-linux/rknn-toolkit/issues

你是EfficientNet几啊？

你是EfficientNet几啊？

EfficientNet V1 B_3

不是，这个应该是 RKNN-Toolkit 依赖的 pytorch 版本与导出模型的 pytorch 版本不一致导致的

authors: MinYounZhang leiqing1 zen-xingle

repo: rockchip-linux/rknn-toolkit


text:
rstudio-server: Ubuntu 24.04 (noble) not yet supported

Redacted output:

Downloading RStudio Server...
/tmp/rstudio-server /tmp/dev-container-features/rstudio-server_1
Download from https://rstudio.org/download/latest/stable/server/noble/rstudio-server-latest-amd64.deb
(!) Version stable for noble amd64 is not found

My understanding is that this is an upstream issue and that 24.04 is not actually supported.

My understanding is that this is an upstream issue and that 24.04 is not actually supported.

😞

I have been digging into this lately, my understanding is now the following:

RStudio Desktop has some serious issues related to the Electron runtime used for Desktop.
RStudio Server builds for Ubuntu 22.04 may work 'off-label'. I have been able to run RStudio Server 2024.04.2+764 on Ubuntu 24.04.

Maybe Posit will never release an RStudio Server 2024.04.x build specifically for Ubuntu 24.04.

The latest release of RStudio solve this.

RStudio does not publish download URLs for noble, but reuses the URLs for jammy, so this needs to be corrected.

authors: HenningLorenzen-ext-bayer eitsupi

repo: rocker-org/devcontainer-features


text:
Add 'mini.doc' module of 'mini.nvim'

Checklist:

[x] The plugin is specifically built for Neovim.
[x] The lines end with a .. This is to conform to awesome-list linting and requirements.
[x] It's not already on the list.

Thanks for the PR!

authors: echasnovski tversteeg

repo: rockerBOO/awesome-neovim


text:
added LP and socket puppet entries. added github handle for paladin

First Rocketpool contribution!

Some cool stuff here @paladin147, I've included this in https://github.com/rocket-pool/RPIPs/pull/206, and made some changes. The core of this was really useful, I love the persona section.

Just for clarities sake, I wouldn't recommend merging this PR as is, @xrchz. It's been cleaned up as part of #206. If we wanted to put in direct, there are a number of spelling and grammar bits that we should pick up at a minimum, but I'd suggest just taking #206.

Closing since changes are accounted for in #206

authors: LongForWisdom orangesamus paladin147

repo: rocket-pool/RPIPs


text:
Request: Add more information on converting a 16-ETH minipool into two 8-ETH minipools

I think this will be very common come Atlas/Shanghai , and the guide could be much more specific on how to do this, and have a section that walks through the actual steps on doing this. From reading it looks like you need to do bond reduction steps, and then some of the normal minipool steps. But I think it would help and reduce questions, if there was a specific section called "Migrating 16-ETH minipool into two 8-ETH minipools" with all the specific steps needed.

Hello @ForceConstant  A support ticket has been opened for you. Talk to a ROCKETPOOL Dev on the Live support page so that your issue can be looked into. CLICK HERE

This new guide is what you're looking for! https://docs.rocketpool.net/guides/node/leb-migration.html

authors: Charlespate ForceConstant ryanscovill


text:
Extract REST patterns from Thingybase

Extract the REST patterns from https://www.thingybase.com/ into a Rails lib to make the creation of other REST applications easier.
Here's what the controllers look like in Thingybase:
class MembersController < ResourcesController
  include AccountLayout

  protected
    def navigation_key
      "People"
    end

  private
    def self.resource
      Member
    end

    def resource_scope
      policy_scope.joins(:user)
    end

    def permitted_params
      [:user_id, :account_id]
    end

    def assign_attributes
      self.resource.account = @account
    end

    def destroy_redirect_url
      account_people_url @account
    end
end

Instead of using a DSL, Thingybase accomplishes laconic resource controllers via PORO. I have a few main controllers:

ResourcesController - What you'd expect: a controller for handling CRUD operations in a plural resource. Also handle auth, attribute allow-lists, etc.

ResourceController - Same as above, but for a singular resource.

NestedResourceController - This is where things start to get interesting. These controllers generally only have a new and create action that creates the resource within the scope of the parent controller, then it redirect to a ResourcesController so that the developer doesn't end up in a situation where they nest a bunch of resource controllers. An example of this would be a TODO list: the parent resource would be a List and the child an Item.

NestedWeakResourceController - This is the weird one; a "weak" resource is on where the parent resource is actually the same as the "nested" resource, but might not need the backing of a full ActiveRecord (or model). For example, the parent resource might be a Subscription. In a simple world, canceling a subscription would just be a delete action on the SubscriptionCancelation controller, but realistically you might have a CancelationController with a Subscription parent resource. The cancelation would make the flow a little nicer because you could show a new view for the cancelation that tells the user a few things about what they might need to do to complete the cancelation. To "confirm" the cancelation they would click on a button that creates a POST request to cancelations, which would then delete the subscription (or modify it).

The plan for 0.1.0 is to extract this from https://www.thingybase.com/ and re-integrate it into https://www.legiblenews.com/ and another project.

repo: rocketshipio/oxidizer


text:
ffi windows test running on linux

Last week was this error:
Failures:

  1) role::example_win on windows-2012 R2-x64 should contain Class[role::example_win]
     Failure/Error: require 'ffi'

     Puppet::PreformattedError:
       Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Type-Name, Could not autoload puppet/type/registry_value: Could not autoload puppet/provider/registry_value/registry: cannot load such file -- ffi at /Users/cdenneen/src/gitlab/controltemplate-puppet/spec/fixtures/modules/registry/manifests/value.pp:66:3 at /Users/cdenneen/src/gitlab/controltemplate-puppet/spec/fixtures/modules/profile_base/manifests/windows/security.pp:6 on node

I didn't happen to grab the bundle list but this week slightly different error (same idea it seems)
ffi_lib instead...
  1) role::example_win on windows-2012 R2-x64 should contain Class[role::example_win]
     Failure/Error: ffi_lib :advapi32

     Puppet::PreformattedError:
       Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Type-Name, Could not autoload puppet/type/registry_value: Could not autoload puppet/provider/registry_value/registry: no implicit conversion of Symbol into String.
       Could not open library 'libadvapi32.dylib': dlopen(libadvapi32.dylib, 5): image not found at /Users/cdenneen/work/controltemplate-puppet/spec/fixtures/modules/registry/manifests/value.pp:66:3 at /Users/cdenneen/work/controltemplate-puppet/spec/fixtures/modules/profile_base/manifests/windows/security.pp:6 on node .ap.org
     # ./.bundle/gems/ffi-1.9.23/lib/ffi/library.rb:147:in `block in ffi_lib'
     # ./.bundle/gems/ffi-1.9.23/lib/ffi/library.rb:100:in `map'
     # ./.bundle/gems/ffi-1.9.23/lib/ffi/library.rb:100:in `ffi_lib'
     # ./spec/fixtures/modules/registry/lib/puppet/provider/registry_value/registry.rb:229:in `block in <top (required)>'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/classgen.rb:136:in `class_eval'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/classgen.rb:136:in `genthing'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/classgen.rb:36:in `genclass'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/type.rb:1860:in `provide'
     # ./spec/fixtures/modules/registry/lib/puppet/provider/registry_value/registry.rb:10:in `<top (required)>'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load_file'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:83:in `block in loadall'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:81:in `each'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:81:in `loadall'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:208:in `loadall'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/metatype/manager.rb:126:in `newtype'
     # ./spec/fixtures/modules/registry/lib/puppet/type/registry_value.rb:9:in `<top (required)>'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load_file'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:194:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/metatype/manager.rb:171:in `type'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/runtime3_type_loader.rb:31:in `find'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:151:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:143:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:143:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:143:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/loader.rb:53:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/types/type_parser.rb:194:in `interpret_QualifiedReference'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/types/type_parser.rb:52:in `interpret'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:312:in `eval_QualifiedReference'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:870:in `eval_ResourceDefaultsExpression'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `block in eval_BlockExpression'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `each'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `reduce'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `eval_BlockExpression'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/parser/evaluating_parser.rb:63:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:32:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:72:in `block (2 levels) in evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:71:in `catch'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:71:in `block in evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:70:in `catch'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:70:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast.rb:31:in `safeevaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/resource/type.rb:184:in `evaluate_code'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/resource.rb:81:in `block in evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/resource.rb:73:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:587:in `block (3 levels) in evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:585:in `each'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:585:in `block (2 levels) in evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:584:in `block in evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/errors.rb:64:in `exceptwrap'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:583:in `evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:616:in `block (2 levels) in evaluate_generators'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:613:in `block in evaluate_generators'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:610:in `loop'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:610:in `evaluate_generators'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:191:in `block (2 levels) in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:191:in `block in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/context.rb:65:in `override'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet.rb:306:in `override'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:166:in `compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:33:in `compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:269:in `block (2 levels) in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:267:in `block in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util.rb:224:in `block in benchmark'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util.rb:223:in `benchmark'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:265:in `compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:55:in `find'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/indirection.rb:194:in `find'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/adapters.rb:83:in `catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/adapters.rb:162:in `catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:407:in `build_catalog_without_cache'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:418:in `block in build_catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/cache.rb:17:in `call'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/cache.rb:17:in `get'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:417:in `build_catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:88:in `block in load_catalogue'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:368:in `with_vardir'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:81:in `load_catalogue'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/example/class_example_group.rb:7:in `catalogue'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:10:in `block in subject'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/matchers/create_generic.rb:84:in `call'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/matchers/create_generic.rb:84:in `matches?'
     # ./spec/classes/role/example_win_spec.rb:22:in `block (5 levels) in <top (required)>'
     # ------------------
     # --- Caused by: ---
     # LoadError:
     #   no implicit conversion of Symbol into String.
     #   Could not open library 'libadvapi32.dylib': dlopen(libadvapi32.dylib, 5): image not found
     #   ./.bundle/gems/ffi-1.9.23/lib/ffi/library.rb:147:in `block in ffi_lib'

new bundle list
work/controltemplate-puppet - [modulesync●] » bundle list
Gems included by the bundle:
  * CFPropertyList (2.3.6)
  * addressable (2.4.0)
  * ansi (1.5.0)
  * ast (2.4.0)
  * aws-sdk-v1 (1.67.0)
  * backports (3.11.3)
  * beaker (3.34.0)
  * beaker-abs (0.5.0)
  * beaker-answers (0.23.0)
  * beaker-aws (0.4.0)
  * beaker-docker (0.3.3)
  * beaker-google (0.1.0)
  * beaker-hiera (0.1.1)
  * beaker-hostgenerator (1.1.12)
  * beaker-i18n_helper (1.1.0)
  * beaker-module_install_helper (0.1.7)
  * beaker-openstack (0.2.0)
  * beaker-pe (1.40.4)
  * beaker-puppet (0.13.6)
  * beaker-puppet_install_helper (0.9.2)
  * beaker-rspec (6.2.3)
  * beaker-task_helper (1.4.0)
  * beaker-vagrant (0.4.0)
  * beaker-vcloud (0.2.0)
  * beaker-vmpooler (1.2.0)
  * beaker-vmware (0.2.0)
  * builder (3.2.3)
  * bundler (1.16.1)
  * byebug (9.0.6)
  * childprocess (0.6.3)
  * coderay (1.1.2)
  * declarative (0.0.10)
  * declarative-option (0.1.0)
  * deep_merge (1.2.1)
  * diff-lcs (1.3)
  * docile (1.3.0)
  * docker-api (1.34.2)
  * domain_name (0.5.20180417)
  * erubis (2.7.0)
  * ethon (0.11.0)
  * excon (0.62.0)
  * facter (2.5.1)
  * facterdb (0.5.2)
  * faraday (0.15.0)
  * faraday_middleware (0.12.2)
  * fast_gettext (1.1.2)
  * ffi (1.9.23)
  * fission (0.5.0)
  * fog-core (1.45.0)
  * fog-json (1.0.2)
  * fog-openstack (0.1.25)
  * formatador (0.2.5)
  * gettext (3.2.9)
  * gettext-setup (0.30)
  * gh (0.15.1)
  * google-api-client (0.10.3)
  * googleauth (0.6.2)
  * gssapi (1.2.0)
  * gyoku (1.3.1)
  * hiera (3.4.3)
  * highline (1.7.10)
  * hocon (1.2.5)
  * http-cookie (1.0.3)
  * httpclient (2.8.3)
  * hurley (0.2)
  * in-parallel (0.1.17)
  * inifile (3.0.0)
  * iniparse (1.4.4)
  * ipaddress (0.8.3)
  * jgrep (1.5.0)
  * json (1.8.1)
  * json-schema (2.8.0)
  * json_pure (1.8.6)
  * jwt (2.1.0)
  * launchy (2.4.3)
  * little-plugger (1.1.4)
  * locale (2.1.2)
  * logging (2.2.2)
  * master_manipulator (2.1.1)
  * mcollective-client (2.12.1)
  * memoist (0.16.0)
  * metaclass (0.0.4)
  * metadata-json-lint (2.1.0)
  * method_source (0.8.2)
  * mime-types (2.99.3)
  * mini_portile2 (2.3.0)
  * minitar (0.6.1)
  * minitest (5.11.3)
  * mocha (1.1.0)
  * multi_json (1.13.1)
  * multipart-post (2.0.0)
  * net-http-persistent (2.9.4)
  * net-http-pipeline (1.0.1)
  * net-scp (1.2.1)
  * net-ssh (4.2.0)
  * net-telnet (0.1.1)
  * netrc (0.11.0)
  * nokogiri (1.8.2)
  * nori (2.6.0)
  * oga (2.15)
  * open_uri_redirections (0.2.1)
  * os (0.9.6)
  * overcommit (0.39.1)
  * parallel (1.12.1)
  * parallel_tests (2.14.2)
  * parser (2.5.1.0)
  * powerpack (0.1.1)
  * pry (0.10.4)
  * pry-byebug (3.4.3)
  * puppet (4.10.10)
  * puppet-blacksmith (3.4.0)
  * puppet-lint (2.3.5)
  * puppet-module-posix-default-r2.1 (0.3.2)
  * puppet-module-posix-dev-r2.1 (0.3.2)
  * puppet-module-posix-system-r2.1 (0.3.2)
  * puppet-syntax (2.4.1)
  * puppet_pot_generator (1.0.1)
  * puppetclassify (0.1.7)
  * puppetlabs_spec_helper (2.7.0)
  * pusher-client (0.6.2)
  * rainbow (2.2.2)
  * rake (12.3.1)
  * rb-readline (0.5.5)
  * rbvmomi (1.12.0)
  * redcarpet (3.4.0)
  * representable (3.0.4)
  * require_all (1.3.3)
  * rest-client (1.8.0)
  * retriable (3.1.1)
  * rspec (3.7.0)
  * rspec-core (3.7.1)
  * rspec-expectations (3.7.0)
  * rspec-its (1.2.0)
  * rspec-mocks (3.7.0)
  * rspec-puppet (2.6.11)
  * rspec-puppet-facts (1.9.0)
  * rspec-support (3.7.1)
  * rspec_junit_formatter (0.3.0)
  * rsync (1.0.9)
  * rubocop (0.49.1)
  * rubocop-i18n (1.2.0)
  * rubocop-rspec (1.16.0)
  * ruby-ll (2.1.2)
  * ruby-progressbar (1.9.0)
  * rubyntlm (0.6.2)
  * serverspec (2.39.0)
  * sfl (2.3)
  * signet (0.8.1)
  * simplecov (0.16.1)
  * simplecov-html (0.10.2)
  * slop (3.6.0)
  * spdx-licenses (1.1.0)
  * specinfra (2.67.3)
  * stomp (1.4.4)
  * stringify-hash (0.0.2)
  * systemu (2.6.5)
  * text (1.3.1)
  * thor (0.20.0)
  * travis (1.8.8)
  * travis-lint (2.0.0)
  * trollop (2.1.2)
  * typhoeus (0.8.0)
  * uber (0.1.0)
  * unf (0.1.4)
  * unf_ext (0.0.7.5)
  * unicode-display_width (1.3.2)
  * websocket (1.2.5)
  * winrm (2.2.3)

I assume this is not on a Windows machine.
Seems that the provider thinks it's on Windows and is therefore safe to load the system DLLs via FFI.
https://github.com/puppetlabs/puppetlabs-registry/blob/69e9688f966ea39d0e79262dac7b8a057feb751c/lib/puppet/provider/registry_value/registry.rb#L217-L232

@glennsarti yes
It's a linux machine running class that supports CentOS 6, 7 and Windows 2012R2
require 'spec_helper'

describe 'role::example_win' do
  on_supported_os({
    supported_os: [
      {
        'operatingsystem' => 'windows',
        'operatingsystemrelease' => [
          '2012 R2'
        ]
      }
    ],
    facterversion: '3.7'
  }).each do |os, facts|
    context "on #{os}" do
      let(:facts) do
        facts.merge({
          puppetversion: Puppet.version,
          role: 'example'
        })
      end
      %w{role::example_win profile::example profile_base}.each do |puppet_class|
        it { is_expected.to contain_class(puppet_class) }
      end
    end
  end
end

role::example_win
  on windows-2012 R2-x86_64
    should contain Class[role::example_win] (FAILED - 1)
    should contain Class[profile::example]
    should contain Class[profile_base]

Total resources:   1
Touched resources: 1
Resource coverage: 100.00%

Failures:

  1) role::example_win on windows-2012 R2-x86_64 should contain Class[role::example_win]
     Failure/Error: ffi_lib :advapi32

     Puppet::PreformattedError:
       Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Type-Name, Could not autoload puppet/type/registry_value: Could not autoload puppet/provider/registry_value/registry: no implicit conversion of Symbol into String.
       Could not open library 'libadvapi32.dylib': dlopen(libadvapi32.dylib, 5): image not found at /Users/cdenneen/work/controltemplate-puppet/spec/fixtures/modules/registry/manifests/value.pp:66:3 at /Users/cdenneen/work/controltemplate-puppet/spec/fixtures/modules/profile_base/manifests/windows/security.pp:6 on node

Now if i comment out role::example_win from the class check it just moves the error down:
require 'spec_helper'

describe 'role::example_win' do
  on_supported_os({
    supported_os: [
      {
        'operatingsystem' => 'windows',
        'operatingsystemrelease' => [
          '2012 R2'
        ]
      }
    ],
    facterversion: '3.7'
  }).each do |os, facts|
    context "on #{os}" do
      let(:facts) do
        facts.merge({
          puppetversion: Puppet.version,
          role: 'example'
        })
      end
      # %w{role::example_win profile::example profile_base}.each do |puppet_class|
      %w{profile::example profile_base}.each do |puppet_class|
        it { is_expected.to contain_class(puppet_class) }
      end
    end
  end
end

role::example_win
  on windows-2012 R2-x86_64
    should contain Class[profile::example] (FAILED - 1)
    should contain Class[profile_base]

Total resources:   1
Touched resources: 1
Resource coverage: 100.00%

Failures:

  1) role::example_win on windows-2012 R2-x86_64 should contain Class[profile::example]
     Failure/Error: ffi_lib :advapi32

     Puppet::PreformattedError:
       Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Type-Name, Could not autoload puppet/type/registry_value: Could not autoload puppet/provider/registry_value/registry: no implicit conversion of Symbol into String.
       Could not open library 'libadvapi32.dylib': dlopen(libadvapi32.dylib, 5): image not found at /Users/cdenneen/work/controltemplate-puppet/spec/fixtures/modules/registry/manifests/value.pp:66:3 at /Users/cdenneen/work/controltemplate-puppet/spec/fixtures/modules/profile_base/manifests/windows/security.pp:6 on node
     # ./.bundle/gems/ffi-1.9.23/lib/ffi/library.rb:147:in `block in ffi_lib'
     # ./.bundle/gems/ffi-1.9.23/lib/ffi/library.rb:100:in `map'
     # ./.bundle/gems/ffi-1.9.23/lib/ffi/library.rb:100:in `ffi_lib'
     # ./spec/fixtures/modules/registry/lib/puppet/provider/registry_value/registry.rb:229:in `block in <top (required)>'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/classgen.rb:136:in `class_eval'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/classgen.rb:136:in `genthing'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/classgen.rb:36:in `genclass'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/type.rb:1860:in `provide'
     # ./spec/fixtures/modules/registry/lib/puppet/provider/registry_value/registry.rb:10:in `<top (required)>'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load_file'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:83:in `block in loadall'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:81:in `each'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:81:in `loadall'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:208:in `loadall'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/metatype/manager.rb:126:in `newtype'
     # ./spec/fixtures/modules/registry/lib/puppet/type/registry_value.rb:9:in `<top (required)>'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load_file'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:194:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/metatype/manager.rb:171:in `type'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/runtime3_type_loader.rb:31:in `find'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:151:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:143:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:143:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:143:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/loader.rb:53:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/types/type_parser.rb:194:in `interpret_QualifiedReference'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/types/type_parser.rb:52:in `interpret'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:312:in `eval_QualifiedReference'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:870:in `eval_ResourceDefaultsExpression'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `block in eval_BlockExpression'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `each'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `reduce'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `eval_BlockExpression'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/parser/evaluating_parser.rb:63:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:32:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:72:in `block (2 levels) in evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:71:in `catch'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:71:in `block in evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:70:in `catch'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:70:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast.rb:31:in `safeevaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/resource/type.rb:184:in `evaluate_code'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/resource.rb:81:in `block in evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/resource.rb:73:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:587:in `block (3 levels) in evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:585:in `each'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:585:in `block (2 levels) in evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:584:in `block in evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/errors.rb:64:in `exceptwrap'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:583:in `evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:616:in `block (2 levels) in evaluate_generators'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:613:in `block in evaluate_generators'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:610:in `loop'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:610:in `evaluate_generators'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:191:in `block (2 levels) in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:191:in `block in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/context.rb:65:in `override'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet.rb:306:in `override'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:166:in `compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:33:in `compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:269:in `block (2 levels) in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:267:in `block in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util.rb:224:in `block in benchmark'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util.rb:223:in `benchmark'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:265:in `compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:55:in `find'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/indirection.rb:194:in `find'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/adapters.rb:83:in `catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/adapters.rb:162:in `catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:407:in `build_catalog_without_cache'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:418:in `block in build_catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/cache.rb:17:in `call'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/cache.rb:17:in `get'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:417:in `build_catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:88:in `block in load_catalogue'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:368:in `with_vardir'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:81:in `load_catalogue'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/example/class_example_group.rb:7:in `catalogue'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:10:in `block in subject'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/matchers/create_generic.rb:84:in `call'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/matchers/create_generic.rb:84:in `matches?'
     # ./spec/classes/role/example_win_spec.rb:24:in `block (5 levels) in <top (required)>'
     # ------------------
     # --- Caused by: ---
     # LoadError:
     #   no implicit conversion of Symbol into String.
     #   Could not open library 'libadvapi32.dylib': dlopen(libadvapi32.dylib, 5): image not found
     #   ./.bundle/gems/ffi-1.9.23/lib/ffi/library.rb:147:in `block in ffi_lib'

Finished in 8.45 seconds (files took 4.98 seconds to load)
17 examples, 1 failure

Failed examples:

rspec './spec/classes/role/example_win_spec.rb[1:1:1]' # role::example_win on windows-2012 R2-x86_64 should contain Class[profile::example]

authors: cdenneen glennsarti

repo: rodjek/rspec-puppet


text:
Is this gem working?

Hi @rodrigomageste,
I would like to know if this gem is working and if the project is alive.
I'm very interested because Zoop has no official gem for ruby.
Many thanks!

Hi @lautarocastillo, this gem is working and the project is alive. :)
Feel free to use it, any questions just talk to me.
I'm preparing a decent README for this gem.

authors: lautarocastillo rodrigomageste

repo: rodrigomageste/zoop-ruby