summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2016-02-17 10:54:26 +0100
committerVladimír Čunát <vcunat@gmail.com>2016-02-17 10:54:26 +0100
commitb8c489e781a8690c39fb9e967dfafb9ad6a65fa1 (patch)
treee39fd89fd1afc7ca357a7a41b5f9390332165dda /doc
parent4ca2332bac720a8eb100ada05262bd9d2f5b62c4 (diff)
parente9520e81b375fca8bcf06b3f4c2dd3bb0b757be6 (diff)
Merge branch 'staging'
It seemed very fine on Hydra before it was cancelled due to glibc rebuild, in particular the nixpkgs unstable job succeeded except for bootstrap-tarball tests which should be fine after ee994dfae6e. Therefore, let's avoid another mass rebuild by merging now when we don't have binaries for master anyway.
Diffstat (limited to 'doc')
-rw-r--r--doc/languages-frameworks/ruby.xml32
1 files changed, 32 insertions, 0 deletions
diff --git a/doc/languages-frameworks/ruby.xml b/doc/languages-frameworks/ruby.xml
index a2b4475a4a54..d81422b610ee 100644
--- a/doc/languages-frameworks/ruby.xml
+++ b/doc/languages-frameworks/ruby.xml
@@ -42,5 +42,37 @@ and scalable.";
<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.
</para>
+<para>Resulting derivations also have two helpful items, <literal>env</literal> and <literal>wrapper</literal>. The first one allows one to quickly drop into
+<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
+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
+<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.
+For example, to make a derivation <literal>my-script</literal> for a <filename>my-script.rb</filename> (which should be placed in <filename>bin</filename>) you should
+run <command>bundix</command> as specified above and then use <literal>bundlerEnv</literal> lile this:</para>
+
+<programlisting>
+<![CDATA[let env = bundlerEnv {
+ name = "my-script-env";
+
+ inherit ruby;
+ gemfile = ./Gemfile;
+ lockfile = ./Gemfile.lock;
+ gemset = ./gemset.nix;
+};
+
+in stdenv.mkDerivation {
+ name = "my-script";
+
+ buildInputs = [ env.wrapper ];
+
+ script = ./my-script.rb;
+
+ buildCommand = ''
+ mkdir -p $out/bin
+ install -D -m755 $script $out/bin/my-script
+ patchShebangs $out/bin/my-script
+ '';
+}]]>
+</programlisting>
+
</section>