Sha256: eeee18c34415ed47c2d2d9bba44420ce2fa1602956d5de631b43a08fd55ff29a

Contents?: true

Size: 1.1 KB

Versions: 16

Compression:

Stored size: 1.1 KB

Contents

#include "ruby_helper.hpp"
#include <leatherman/logging/logging.hpp>
#include <leatherman/ruby/api.hpp>
#include <internal/ruby/module.hpp>
#include "../fixtures.hpp"

using namespace std;
using namespace facter::ruby;
using namespace facter::facts;
using namespace leatherman::ruby;

bool load_custom_fact(string const& filename, collection& facts)
{
    auto& ruby = api::instance();

    module mod(facts);

    string file = LIBFACTER_TESTS_DIRECTORY "/fixtures/ruby/" + filename;
    VALUE result = ruby.rescue([&]() {
        // Do not construct C++ objects in a rescue callback
        // C++ stack unwinding will not take place if a Ruby exception is thrown!
        ruby.rb_load(ruby.utf8_value(file), 0);
        return ruby.true_value();
    }, [&](VALUE ex) {
        LOG_ERROR("error while resolving custom facts in {1}: {2}", file, ruby.exception_to_string(ex));
        return ruby.false_value();
    });

    mod.resolve_facts();

    return ruby.is_true(result);
}

string ruby_value_to_string(value const* value)
{
    ostringstream ss;
    if (value) {
        value->write(ss);
    }
    return ss.str();
}

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
facter-3.12.2.cfacter.20181217 ext/facter/facter/lib/tests/ruby/ruby_helper.cc
facter-3.12.1.cfacter.20181031 ext/facter/facter/lib/tests/ruby/ruby_helper.cc
facter-3.11.6.cfacter.20181031 ext/facter/facter/lib/tests/ruby/ruby_helper.cc
facter-3.12.1.cfacter.20181023 ext/facter/facter/lib/tests/ruby/ruby_helper.cc
facter-3.11.5.cfacter.20181022 ext/facter/facter/lib/tests/ruby/ruby_helper.cc
facter-3.12.0.cfacter.20181004 ext/facter/facter/lib/tests/ruby/ruby_helper.cc
facter-3.12.0.cfacter.20181001 ext/facter/facter/lib/tests/ruby/ruby_helper.cc
facter-3.12.0.cfacter.20180918 ext/facter/facter/lib/tests/ruby/ruby_helper.cc
facter-3.11.4.cfacter.20180821 ext/facter/facter/lib/tests/ruby/ruby_helper.cc
facter-3.11.3.cfacter.20180716 ext/facter/facter/lib/tests/ruby/ruby_helper.cc
facter-3.11.2.cfacter.20180612 ext/facter/facter/lib/tests/ruby/ruby_helper.cc
facter-3.9.6.cfacter.20180612 ext/facter/facter/lib/tests/ruby/ruby_helper.cc
facter-3.11.2.cfacter.20180606 ext/facter/facter/lib/tests/ruby/ruby_helper.cc
facter-3.9.6.cfacter.20180606 ext/facter/facter/lib/tests/ruby/ruby_helper.cc
facter-3.11.0.cfacter.20180319 ext/facter/facter/lib/tests/ruby/ruby_helper.cc
cfacter-3.11.0.rc.20180314 ext/facter/facter/lib/tests/ruby/ruby_helper.cc