I'm playing with serializable structs and noticed that the absolute path of the source rkt definition is inserted in the representation (I'm writing structs out to a file).
The problem is that if I then move my application to a server for deployment, all serialized structs cannot be deserialized anymore. If I edit/replace, it works, but I assume this is not the right way to proceed.
What is the best way to obtain "portable" serialized structs?
Thanks,
-- Éric
_________________________________________________
For list-related administrative tasks:
http://lists.racket-lang.org/listinfo/users
If the struct is defined in a collection-based library, then the
serialized form will use the collection path instead of a filesystem
path. I think that's the only way currently to make the information
path-independent.
The structs are part of an app I'm building from scratch.
For now I have a couple of .rkt files, some of which define the structs in question, and I import them in the main module with (require "foo.rkt"), etc.
Suggestions?
Thanks,
-- Éric
I mean in a library that you require like
(require mystuff/foo)
or
(require (planet ....))
instead of
(require "foo.rkt")
Or a relative-path `require' is ok from some other module in the same
collection, as long as a collection path is used at some point.
Here's what I've tried:
- moved my application files to the user collects directory of my system.
- made the proper dir/subdir structure
- use only (require myapp/mod1) kind of requires
(It works ok)
Now if I serialize some structures in a file, they still get absolute path names.
Eg.:
((2) 5 ((#"/Users/etanter/Library/Racket/5.1/collects/bibdcc/main.rkt" . deserialize-info:order-v0)
I must be missing something. Any idea?
Thanks,
-- Éric
racket main.rkt [in the "bibdcc" directory]
?
If so, do you get a different result using
racket -l bibdcc
?
(running from DrRacket)
((2) 5 (((lib "bibdcc/structs.rkt") . deserialize-info:order-v0)
((lib "bibdcc/structs.rkt") . deserialize-info:book-v0)
-- Éric