I have some files put into resDirs and when I run the main class from F4, I have no problems accessing these with a relative file path File(`rsc/image'). When this ran directly from the pod fan, it can't resolve the files anymore.
How do you access files in the pod when the code is run from the pod? Haven't been able to find anything in the docs explaining accessing compiled resources.
fansh> pod := Pod.find("testSys")
testSys
fansh> pod.file(`/res/test.txt`)
fan://testSys/res/test.txt
You can also use "fan://" URI scheme:
fansh> `fan://testSys/res/test.txt`.get as File
fan://testSys/res/test.txt
jhughesFri 3 Mar 2017
I tested the first method byt putting this directly into the code and calling the main class from the command prompt to test running from the compiled pod:
pod := Pod.find("podName")
pod.file(`/rsc/file`)
This works fine but i'm not sure if this is the most efficient way to access files located in the pod running the code in the first place. This means to access files in a resource compiled in a pod, I have to call that pod running the code to load at runtime to access the files located in the same pod the code is running from instead of having a relative path where they are accessible directly from the code. If this is as intended, I can make it work as I just did but I wanted to make sure it's not just the working solution but also the intended and efficient way to access files from within the same pod as your running code.
brianFri 3 Mar 2017
Not sure I understand your concern, but if its how to get the pod of the running code, then you can use typeof.pod for the pod of current class.
jhughesFri 3 Mar 2017
My concern was having to call the pod back into itself via the Pod.find method and naming the pod i'm already in by name, just opens up chances for user error. typeof.pod is a much more elegant solution for what i'm trying to do.
jhughes Thu 2 Mar 2017
I have some files put into resDirs and when I run the main class from F4, I have no problems accessing these with a relative file path File(`rsc/image'). When this ran directly from the pod fan, it can't resolve the files anymore.
How do you access files in the pod when the code is run from the pod? Haven't been able to find anything in the docs explaining accessing compiled resources.
brian Thu 2 Mar 2017
Typically you use
sys::Pod.file
:You can also use "fan://" URI scheme:
jhughes Fri 3 Mar 2017
I tested the first method byt putting this directly into the code and calling the main class from the command prompt to test running from the compiled pod:
This works fine but i'm not sure if this is the most efficient way to access files located in the pod running the code in the first place. This means to access files in a resource compiled in a pod, I have to call that pod running the code to load at runtime to access the files located in the same pod the code is running from instead of having a relative path where they are accessible directly from the code. If this is as intended, I can make it work as I just did but I wanted to make sure it's not just the working solution but also the intended and efficient way to access files from within the same pod as your running code.
brian Fri 3 Mar 2017
Not sure I understand your concern, but if its how to get the pod of the running code, then you can use
typeof.pod
for the pod of current class.jhughes Fri 3 Mar 2017
My concern was having to call the pod back into itself via the Pod.find method and naming the pod i'm already in by name, just opens up chances for user error. typeof.pod is a much more elegant solution for what i'm trying to do.
Thanks.
fraya Fri 3 Mar 2017
You can use
Foo#.pod.file
for short