You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/languages-frameworks/ruby.xml
+23-2
Original file line number
Diff line number
Diff line change
@@ -41,7 +41,29 @@ bundlerEnv rec {
41
41
<para>Please check in the <filename>Gemfile</filename>, <filename>Gemfile.lock</filename> and the <filename>gemset.nix</filename> so future updates can be run easily.
42
42
</para>
43
43
44
-
<para>Resulting derivations also have two helpful items, <literal>env</literal> and <literal>wrapper</literal>. The first one allows one to quickly drop into
44
+
<para>For tools written in Ruby - i.e. where the desire is to install a package and then execute e.g. <command>rake</command> at the command line, there is an alternative builder called <literal>bundlerApp</literal>. Set up the <filename>gemset.nix</filename> the same way, and then, for example:
45
+
</para>
46
+
47
+
<screen>
48
+
<![CDATA[{ lib, bundlerApp }:
49
+
50
+
bundlerApp {
51
+
pname = "corundum";
52
+
gemdir = ./.;
53
+
exes = [ "corundum-skel" ];
54
+
55
+
meta = with lib; {
56
+
description = "Tool and libraries for maintaining Ruby gems.";
57
+
homepage = https://github.com/nyarly/corundum;
58
+
license = licenses.mit;
59
+
maintainers = [ maintainers.nyarly ];
60
+
platforms = platforms.unix;
61
+
};
62
+
}]]>
63
+
64
+
<para>The chief advantage of <literal>bundlerApp</literal> over <literal>bundlerEnv</literal> is the executables introduced in the environment are precisely those selected in the <literal>exes</literal> list, as opposed to <literal>bundlerEnv</literal> which adds all the executables made available by gems in the gemset, which can mean e.g. <command>rspec</command> or <command>rake</command> in unpredictable versions available from various packages.
65
+
66
+
<para>Resulting derivations for both builders also have two helpful attributes, <literal>env</literal> and <literal>wrapper</literal>. The first one allows one to quickly drop into
45
67
<command>nix-shell</command> with the specified environment present. E.g. <command>nix-shell -A sensu.env</command> would give you an environment with Ruby preset
46
68
so it has all the libraries necessary for <literal>sensu</literal> in its paths. The second one can be used to make derivations from custom Ruby scripts which have
47
69
<filename>Gemfile</filename>s with their dependencies specified. It is a derivation with <command>ruby</command> wrapped so it can find all the needed dependencies.
0 commit comments