3 ms·
Neat. I wouldn't use it, as I have a database :). Some notes: - it's not thread safe - it's not jruby-safe - you should generally avoid Marshal. It can have
by gonyea 11y ago
Neat. I wouldn't use it, as I have a database :).
Some notes:
- it's not thread safe
- it's not jruby-safe
- you should generally avoid Marshal. It can have compatibility issues across Ruby versions, etc. plus yaml or json can be introspected by someone who needs to debug things.
- it looks like it saves state in your current working directory? That'll definitely burn you down the line.
- no tests. Im sure there's weird bugs hidden in there.
Edit - another observation:
- you're setting instance variables inside the class definition. Making them Class-Instance variables, rather than Instance-of-a-Class variables like you want.
You need to set them in the initialize method instead.
- rco8786 11y agoIs thread safety a concern with Ruby? Or are you thinking of multiple ruby processes using the same Durable?
- gonyea 11y agoYes. I actually mean both. Thread safety does and doesn't matter. MRI has a GIL so appending to an array across threads will "just work." JRuby doesn't and it won't end well if you're not giving it thought. But yeah, multi-process web servers absolutely trample over each other. File access would need to be coordinated / synchronized.