Our university IT department has a server that runs WeBWorK. We started it running last fall. A week or so ago, I asked if they might be willing to have a test server running on the most recent upgrade so that we could test our problems and courses before the next fall semester.
I'm not sure if anything has been done or not, but suddenly the problems that I've been using for the last year have serious issues, making me think that they attempted an upgrade but did not do all steps.
When I have a MathObject and attempt to display its value in the text of a problem, I am instead getting something like:
Compute the derivative of \(f(x) = Value::Formula=HASH(0x7f09ef1adea0)\).
Any ideas on what might have happened?
Thanks,
D. Brian Walton
James Madison University
Hi Brian,
It's hard to say from just this information what is going on. Could you post the text of one of the affected problems?
Also, can you identify the version of the code on the production server and on the test server?
For example, on the test server, the output of 'svn info' run in the webwork2/, pg/, and NationalProblemLibrary/ directories will at least let us know whether they are all pointed at the right repositories. (That is, assuming it was installed from svn.)
And, seeing the code from one of the problems, perhaps we can find a macro file or something that was moved or renamed and then go back to see if that was properly accounted for in the upgrade.
Thanks,
Jason
It's hard to say from just this information what is going on. Could you post the text of one of the affected problems?
Also, can you identify the version of the code on the production server and on the test server?
For example, on the test server, the output of 'svn info' run in the webwork2/, pg/, and NationalProblemLibrary/ directories will at least let us know whether they are all pointed at the right repositories. (That is, assuming it was installed from svn.)
And, seeing the code from one of the problems, perhaps we can find a macro file or something that was moved or renamed and then go back to see if that was properly accounted for in the upgrade.
Thanks,
Jason
Unfortunately, I don't have any command-line access to the server in question, and the administrator of the server is out of touch right now. (I've sent a query to see what changed but haven't heard back.) Is there a browser-based method to determine what version is being used? (I can compose a problem that reports relevant information if I knew what to display.)
Here is a sample of a problem that I think should have worked. The MathObjects are not correctly displaying their values, but instead show some type of hash.
---------------- PG Code ----------------
DOCUMENT(); # This should be the first executable line in the problem.
loadMacros(
"PGstandard.pl",
"MathObjects.pl",
);
TEXT(beginproblem);
###################################
# Setup
Context("Numeric");
##############################################
$a = random(1,9,1);
$b = Real($a);
Context()->texStrings;
BEGIN_TEXT
$PAR The value of \(a\) is $a.
$PAR The value of \(b\) is $b.
Please enter the values: $BR
\(a\) = \{ ans_rule(10) \} $BR
\(b\) = \{ ans_rule(10) \}
$BR
END_TEXT
Context()->normalStrings;
$showPartialCorrectAnswers = 1;
ANS( num_cmp($a) );
ANS( $b->cmp );
ENDDOCUMENT();
---------------- plainText Output ---------------
Here is a sample of a problem that I think should have worked. The MathObjects are not correctly displaying their values, but instead show some type of hash.
---------------- PG Code ----------------
DOCUMENT(); # This should be the first executable line in the problem.
loadMacros(
"PGstandard.pl",
"MathObjects.pl",
);
TEXT(beginproblem);
###################################
# Setup
Context("Numeric");
##############################################
$a = random(1,9,1);
$b = Real($a);
Context()->texStrings;
BEGIN_TEXT
$PAR The value of \(a\) is $a.
$PAR The value of \(b\) is $b.
Please enter the values: $BR
\(a\) = \{ ans_rule(10) \} $BR
\(b\) = \{ ans_rule(10) \}
$BR
END_TEXT
Context()->normalStrings;
$showPartialCorrectAnswers = 1;
ANS( num_cmp($a) );
ANS( $b->cmp );
ENDDOCUMENT();
---------------- plainText Output ---------------
The value of \(a\) is 1.
The value of \(b\) is Value::Real=HASH(0x7f09ee828f58). Please enter the values:
\(a\) =
\(b\) =
Note: You can earn partial credit on this problem.
I believe that I tracked down the issue. After talking to the system administrator and getting an account on the server, I was able to discover that the perl library had been updated on May 4, switching to the newer version of Safe.pm. Since this happened after our semester ended, nobody discovered the issue until I started back into writing some new problems.
I replicated the issue on a LiveDVD install that I then upgraded to Ubuntu 10.04 LTS. I was able to resolve the issue by adding the WWSafe.pm and then modifying the files that called "use Safe;" to "use WWSafe;" as described:
http://webwork.maa.org/wiki/Release_notes_for_WeBWorK_2.4.9
I've requested our system administrator to make the fix to our server. We should be upgrading to the current WW release later this summer.
- Brian
I replicated the issue on a LiveDVD install that I then upgraded to Ubuntu 10.04 LTS. I was able to resolve the issue by adding the WWSafe.pm and then modifying the files that called "use Safe;" to "use WWSafe;" as described:
http://webwork.maa.org/wiki/Release_notes_for_WeBWorK_2.4.9
I've requested our system administrator to make the fix to our server. We should be upgrading to the current WW release later this summer.
- Brian