It works for Scriblogify as well as Scribble. Thanks, Matthew.<br><br><div class="gmail_quote">On Sat, Oct 27, 2012 at 11:15 PM, Matthew Flatt <span dir="ltr">&lt;<a href="mailto:mflatt@cs.utah.edu" target="_blank">mflatt@cs.utah.edu</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">You&#39;re running into sandbox filesystem-protection rules.<br>
<br>
When you include a path in #:requires for `make-evaluator&#39;, then read<br>
access is granted for that file in the sandbox, so that&#39;s why the extra<br>
#:require path changes the document&#39;s behavior.<br>
<br>
Outside of DrRacket... well, I&#39;m not excatly sure. Something in<br>
DrRacket&#39;s configuration of various path and module parameters enables<br>
access to the directory containing &quot;my-scribble-doc.scrbl&quot;, while the<br>
configuration of raw `racket&#39;, `scribble&#39;, or `raco scribblogify&#39;<br>
doesn&#39;t allow access to the directory.<br>
<br>
Assuming that you trust the code that you run in documentation --- at<br>
least as much as you trust the document itself --- the best approach is<br>
probably to use `call-with-trusted-sandbox-configuration&#39;:<br>
<br>
 @(interaction<br>
  #:eval (call-with-trusted-sandbox-configuration<br>
          (lambda ()<br>
<div class="im">            (make-evaluator<br>
             &#39;racket/base<br>
             (sandbox-output &#39;string)<br>
             (sandbox-error-output &#39;string)<br>
</div>             #:requires &#39;(&quot;../Private/my-racket-mod.rkt&quot;))))<br>
   (f 1 2))<br>
<br>
I didn&#39;t actually try that with `raco scribblogify&#39;, but I got the<br>
errors that you report when using `raco scribble&#39;, and using<br>
`call-with-trusted-sandbox-configuration&#39; solves the problem with `raco<br>
scribble&#39;.<br>
<div><div class="h5"><br>
At Fri, 26 Oct 2012 22:38:25 -0400, Patrick King wrote:<br>
&gt; When last I wrote on my problems with Scriblogify, I attributed them to<br>
&gt; Windows 7 security... I was way too optimistic, and way too ashamed to<br>
&gt; bother the community again. I have found a couple smoking guns since then,<br>
&gt; and found that they, too, had nothing to do with my problem. The following<br>
&gt; is repeatable in Racket 5.3 and Windows 7:<br>
&gt;<br>
&gt; The following are all part of a project &quot;ScriblogifyBug&quot;, which contains<br>
&gt; folders &quot;Private&quot;, where I hide implementation details, and &quot;Blog&quot;, where I<br>
&gt; boast about my implementation. Like a good little programmer, I use<br>
&gt; rackunit to create custom tests relevant to my code, and use submodules to<br>
&gt; implement tests. Like an enthusiastic Racketeer, I blog via<br>
&gt; Scribble and Scriblogify.<br>
&gt;<br>
&gt; #lang racket/base<br>
&gt; ;; begin Private/my-test-mod.rkt<br>
&gt; (require rackunit)<br>
&gt; (provide (all-defined-out)<br>
&gt;          (all-from-out rackunit))<br>
&gt;<br>
&gt; (define-simple-check<br>
&gt;   (check-my-func f)<br>
&gt;   (procedure? f))<br>
&gt; ;; end Private/my-test-mod.rkt<br>
&gt;<br>
&gt; #lang racket/base<br>
&gt; ;; begin Private/my-racket-mod.rkt<br>
&gt; (provide f)<br>
&gt;<br>
&gt; (module+ test<br>
&gt;   (require &quot;my-test-mod.rkt&quot;))<br>
&gt;<br>
&gt; (define (f x y)<br>
&gt;   (+ x y))<br>
&gt;<br>
&gt; (module+ test<br>
&gt;   (printf &quot;Tests running.~n&quot;)<br>
&gt;   (check-eq? 1 1)<br>
&gt;   (check-my-func f))<br>
&gt; ;; end Private/my-racket-mod.rkt<br>
&gt;<br>
&gt; #lang scribble/manual<br>
&gt; @; begin Blog/my-scribble-doc.scrbl<br>
&gt; @(require racket/sandbox scribble/eval)<br>
&gt; @title{Trapping the Scriblogify Bug}<br>
&gt; @author{Pat}<br>
&gt;<br>
&gt; I expect this file to render fine via the @italic{Scribble HTML} button<br>
&gt; within DrRacket,<br>
&gt; and it does. However, I am curious why I must explicitly require<br>
&gt; &quot;my-test-mod.rkt&quot;, which<br>
&gt; is only called from within the test submodule of &quot;my-racket-mod.rkt&quot;.<br>
&gt;<br>
&gt; Let&#39;s demonstate my nifty new function, @racket[f].<br>
&gt;<br>
&gt; @(interaction #:eval(make-evaluator &#39;racket/base<br>
&gt;                                     (sandbox-output &#39;string)<br>
&gt;                                     (sandbox-error-output &#39;string)<br>
&gt;                                     #:requires<br>
&gt; &#39;(&quot;../Private/my-racket-mod.rkt&quot;<br>
&gt;<br>
&gt;  &quot;../Private/my-test-mod.rkt&quot;))<br>
&gt;               ;                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^<br>
&gt;               ;                               Why must I explicitly require<br>
&gt; this?<br>
&gt;               (f 1 2))<br>
&gt;<br>
&gt;<br>
&gt; I also expect this file to fail to render via @italic{raco scriblogify<br>
&gt; &quot;my-scribble-doc.scrbl&quot;},<br>
&gt; and it does, yielding the error<br>
&gt; @italic{&quot;current-directory: `exists&#39; access denied for<br>
&gt; ~\ScriblogifyBug\Blog\&quot;}. With different<br>
&gt; tweaks, I&#39;ve gotten<br>
&gt; similar &#39;exists&#39; errors for the files in ../Private, involving<br>
&gt; current-directory or similar<br>
&gt; functions described in @bold{14.2 Filesystem} in the documentation, so I<br>
&gt; suspect a Windows<br>
&gt; specific path quirk. For instance, if I put all three files in the same<br>
&gt; directory (modifying<br>
&gt; the @racket{require}s in &quot;my-scribble-doc.scrbl&quot; accordingly), I get the<br>
&gt; error<br>
&gt; @italic{&quot;file-exists?: `exists&#39; access denied for C:\Program<br>
&gt; Files\Racket\.\racket.exe&quot;}. I<br>
&gt; am not sure how to interpret &quot;\.\&quot;, and C:\Program Files\Racket certainly<br>
&gt; exists on my system,<br>
&gt; as does C:\Program Files\Racket\Racket.exe (so there&#39;s the path issue and<br>
&gt; the case issue).<br>
&gt; @; end Blog/my-scribble-doc.scrbl<br>
&gt;<br>
&gt; So, in summary, two issues:<br>
&gt;<br>
&gt; a) Scribble needs help finding and interpreting files found within<br>
&gt; submodules that I would expect to be both findable and irrelevant. When<br>
&gt; explicitly told every potentially relevant file, it can figure out that it<br>
&gt; can ignore it, when rendered within DrRacket.<br>
&gt;<br>
&gt; 2) Scriblogify doesn&#39;t find the help sufficient, when run from the command<br>
&gt; line.<br>
&gt;<br>
&gt; c) One common clue, various path related errors that might be Windows<br>
&gt; Weirdness.<br>
&gt;<br>
&gt; Ok, me sticking with Windows is an issue, one that I hope to rectify in the<br>
&gt; next six months as certain work-related constraints are relaxed.<br>
&gt;<br>
&gt; All thoughts appreciated.<br>
&gt;<br>
&gt; Pat<br>
</div></div>&gt; ____________________<br>
&gt;   Racket Users list:<br>
&gt;   <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
</blockquote></div><br>