Friday, August 23, 2024
PUT an entry on the ol' blog
I finally got the PUT
method working for mod_blog
.
The code on the receiving end is fine,
but the script on the sending side is messy,
but it works well enough for me to use.
[spc]lucy:~/source/boston/Lua>lua put.lua -b test /tmp/foo/1 /tmp/foo/*.png PUT http://boston.roswell.area51/2024/08/23.1 (637) PUT http://boston.roswell.area51/2024/08/23/local_network.png (1273) PUT http://boston.roswell.area51/2024/08/23/local_network_add.png (1512) PUT http://boston.roswell.area51/2024/08/23/local_network_remove.png (1460) PUT http://boston.roswell.area51/2024/08/23/network.png (1702) PUT http://boston.roswell.area51/2024/08/23/network_add.png (1891) PUT http://boston.roswell.area51/2024/08/23/network_remove.png (1842) [spc]lucy:~/source/boston/Lua>
This command on my development server was used to create an entry with multiple images. As you can see, it puts out the URLs that are created as the script runs. And this entry is a test to see if works on my actual server. It should.
I hope.
Murphy's Law as applied to bugs: it is easier to find bugs in production than in development
Well, that could have gone better.
One bug due to inattention and a difference between development and production, and one “how the XXXX did this ever work in the first place?” bug later, things should be working fine.
I am not going to say “I hope” this time.
The first bug prevented a proper HTTP status code from being generated,
so Apache nicely generated a “500 Interner Server Error” for me.
Once I identified what was going on,
it was a simple one line fix,
and an additional call to assert()
to help isolate such errors in the future.
Now on to the other error …
I added the concept of a hook to mod_blog
a few years ago,
and the scripts I have for the various hooks all start with #!/usr/bin/env lua
.
Only now they weren't running,
and the error that was being logged wasn't exactly helpful: entry-pre-hook='./validate.lua' status=127
.
There is no place in mod_blog
nor in the validate.lua
script that exits with a status code of 127.
But the env
program does!
Nice to learn that.
But back to the issue at hand—I've been using these scripts for a few years now,
and only now is it failing?
I eventually found out that the path Apache is using is rather limited,
and it no longer includes the Lua interpreter
(which on my server lives in /usr/local/bin
).
I had to change both scripts to start with #!/usr/local/bin/lua
and that fixed the issue to get the previous post up.
Now that I think about it,
I think I know why it finally stopped working after a few years—I actually have an instance of Apache running that I didn't start by hand,
and the default path at boot time doesn't include /usr/local/bin
.
Sigh
The previous bug fix was buggy.
And yes, programming and deployments can always get this messy.