[racket] serializable structs and portability

From: Eric Tanter (etanter at dcc.uchile.cl)
Date: Tue Mar 29 14:16:33 EDT 2011

Sorry I still don't get it.

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


On Mar 28, 2011, at 10:33 PM, Matthew Flatt wrote:

> At Mon, 28 Mar 2011 18:28:02 -0400, Eric Tanter wrote:
>> I'm not sure I understand what you mean by "collection-based library". 
>> 
>> 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.
> 
> 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.
> 
> 
> 
>> On Mar 28, 2011, at 5:22 PM, Matthew Flatt wrote:
>> 
>>> At Mon, 28 Mar 2011 17:36:22 -0400, Eric Tanter wrote:
>>>> 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?
>>> 
>>> 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.
>>> 
>>> 
>> 
>> 
>> _________________________________________________
>>  For list-related administrative tasks:
>>  http://lists.racket-lang.org/listinfo/users
> 




Posted on the users mailing list.