Jump to content

Jebretary - Automatic Version Control (backups) for craft and saves [v0.4.0]


Recommended Posts

Well, i thought that the commits failed because it said "fatal error" or such. Maybe they in fact did not fail. Idk.

About ntfs junctions: Perhaps it is just a coincidence. I think junctions should be handled all by the OS just like a normal directory. But on the other hand i have seen then various applications not working correctly with them.

Btw. i'm also getting the "invalid byte sequence in UTF-8" on some crafts. After a couple of tries liquid.exe just quits. And the server generates only errors when it should show details of any of my crafts. Perhaps moving/editing/deleting plenty of my crafts by hand while Jebretary was running was not such a good idea ;) I thing i'll have to delete the repositories and reimport everything from scratch.

Thanks for providing the stack trace, that's helped me narrow down where the UTF-8 issue is coming from.

It's not to do with your craft, and manually editing your craft (or moving / deleting them) should not be a problem (assuming you don't completely break the crafts structure!).

The problem occurs when Jebretary tries to read a part.cfg for one of the parts you have installed (not necessarily one that is being used). It seems there is a non UTF-8 character in the part.cfg, at least that's what I'm guessing, but I need to know what the part is and have a look at its cfg to be sure.

I know this is a pain, but can you try running with just stock parts and then one by one introducing your mods until the issue crops up again? That would be really helpful.

(prob best in a fresh install so we don't mess your main game up). When you change the installed parts, you either need to restart Jebretary, or delete the jebretary.partsDB file that will have appeared in the KSP directory.

After each time you add the next mod; delete the jebretary.partsDB file and then click on any craft, that will prompt jebretary to rebuild it's map of the parts you have. Its during that process that the error occurs.

If you can identify the mod that causes this then I'll install it and try to replicate the error and then we can get the fly-swatter out on this bug!

Thanks!!

I play on a few machines but I currently use syncing software to keep my craft and persistence the same.

I`d like to optionally mirror the whole campaign, all my craft, saves and subs but I can see the value to being able to select just the ones that are mirrored.

If I could select a few installs (across a network) with Jebretary and then all the changes would propagate through that would be amazingly handy.

If there could be a `mirror the entire campaign/install` button that would be cool. Like a raid 1 for KSP...

Working across a network was not something that I'd considered, but it should be possible. So long as you have an addressable path that should be fine.

The main issue is Jebretary might get upset if it looses connection!

Mirroring a whole campaign (the raid 1 option) is the easiest option as that can be done natively with git. The more granular control that I was thinking of will be a little harder. I will build in both options.

As far a mirroring an entire campaign goes, if you're willing to run some manual git commands you can have that right now.

Let say you have 1 KSP install on C:\games\KSP_1 (and its being tracked by Jebretary) and another installed on say n:\backup_games\KSP (and n is a mapped network drive).

Go into n:\backup_games\KSP and open a git terminal (right click -> git bash here).

then type git clone C:/games/KSP_1/saves/my_campaign

(NOTE - the \ must be written as /, your talking to a little bit of linux here!)

that will "clone" the campaign into the second ksp install. (well everything except sub's as they're not being tracked, yet).

when you make changes in the first install on C and Jebretary tracks them you can update the 2nd install by running

git pull origin master

(in a git term from in the cloned campaigns folder)

when you make changes to the 2nd install and want to update the original one back on c you run

git push origin master

(in a git term from in the cloned campaigns folder)

(you only push and pull from the cloned campaign)

Don't have Jebretary running when you run these git commands or things might get odd!

It will also get really messy if you try to make changes in both at the same time before updating. git will ask you to resolve a merge conflict and with the craft/save files that gets really messy.

If you want to manually track the subs then go into the first install and open up a git term and type

git add Subassemblies/

git commit -m "added subs"

Then in your cloned campaign in the 2nd install run `git pull origin master` and it will update.

If you change your existing subs then run

git add -u

git commit -m "I updated a sub" <or some random little message of your choice>

if you add a new sub you need to add it by name

git add Subassemblies/my_new_sub.craft

git commit -m "added another sub, yay"

err so that's some basic git stuff, if you're feeling brave. It can get really confusing if stuff goes wrong so PLEASE take a manual backup before attempting this!

If your just using it as a backup facility, and only moving changes in one direction then it is straightforward (just doing the git pull from the backup dir). It's when you come to push back to the original that it can get messy if there are changes at both ends.

I will be adding the facility to do this before too long anyway, so then you can let Jebretary deal with git!

Link to comment
Share on other sites

The problem occurs when Jebretary tries to read a part.cfg for one of the parts you have installed (not necessarily one that is being used). It seems there is a non UTF-8 character in the part.cfg, at least that's what I'm guessing, but I need to know what the part is and have a look at its cfg to be sure.

Hm. I'll see if i can find the offender. Any chance you could handle such errors gracefully though?

Edit: You've got to love python ...


import os, sys
from os.path import join


def HandleCfgFile(name):
with open(name, 'r') as f:
s = f.read()
try:
s.decode("UTF-8", errors="strict")
except UnicodeDecodeError, e:
print name,':',e
print '"%s"' % (s[max(0,e.start-50):min(len(s),e.end+50)])


for root, dirs, files in os.walk('.'):
for name in files:
if name.endswith('.cfg'):
HandleCfgFile(join(root, name))


.\HabitatPack\Parts\inflato2\part.cfg : 'utf8' codec can't decode byte 0xb2 in position 656: invalid start byte
" a vast improvement in all areas. It features 30 mâ–“ of living space arranged in three stories around "

The offending char is a superscript 2. Interestingly KSP fails at displaying it correctly. Anyway, fixing the cfg got rid of the error. (I still belive it should be handled gracefully like by printing an error and pretending the part wasn't there)

Edited by DaMichel
found it
Link to comment
Share on other sites

That is a lot more complex than my current system which is pretty much a double mouse click. Thank you very much for posting it though.

yeah I thought that would be the case! git is a bit of a strange creature until it becomes your best friend!

Hm. I'll see if i can find the offender. Any chance you could handle such errors gracefully though?

Edit: You've got to love python ...


import os, sys
from os.path import join


def HandleCfgFile(name):
with open(name, 'r') as f:
s = f.read()
try:
s.decode("UTF-8", errors="strict")
except UnicodeDecodeError, e:
print name,':',e
print '"%s"' % (s[max(0,e.start-50):min(len(s),e.end+50)])


for root, dirs, files in os.walk('.'):
for name in files:
if name.endswith('.cfg'):
HandleCfgFile(join(root, name))


.\HabitatPack\Parts\inflato2\part.cfg : 'utf8' codec can't decode byte 0xb2 in position 656: invalid start byte
" a vast improvement in all areas. It features 30 mâ–“ of living space arranged in three stories around "

The offending char is a superscript 2. Interestingly KSP fails at displaying it correctly. Anyway, fixing the cfg got rid of the error. (I still belive it should be handled gracefully like by printing an error and pretending the part wasn't there)

Oh nice 1. +1 for doing that way.

And yes I will be adding error handling around that section to catch general errors. I will also try to handle non UTF-8 chars. The part information section of Jebretary is still in its infancy and needs some refining. Thanks for your help on this!

Link to comment
Share on other sites

Hmm, wonder if my utf is related to that also. Anyway, ill look at it all later or tommorow. Friends 40th bday tonight so if it goes like mine did, ill be in pain for a few days.

I did click on my ship that it did take to see what one it was and got this error. I havent compared it to the one above me, but im suspecting its pretty simular.

#<ArgumentError: invalid byte sequence in UTF-8>
C:/Games/Jebretary/src/app/models/part_parser.rb:71:in `match'
C:/Games/Jebretary/src/app/models/part_parser.rb:71:in `match'
C:/Games/Jebretary/src/app/models/part_parser.rb:71:in `block (2 levels) in index_parts'
C:/Games/Jebretary/src/app/models/part_parser.rb:71:in `select'
C:/Games/Jebretary/src/app/models/part_parser.rb:71:in `block in index_parts'
C:/Games/Jebretary/src/app/models/part_parser.rb:51:in `map'
C:/Games/Jebretary/src/app/models/part_parser.rb:51:in `index_parts'
C:/Games/Jebretary/src/app/models/part_parser.rb:15:in `initialize'
C:/Games/Jebretary/src/app/models/instance.rb:52:in `new'
C:/Games/Jebretary/src/app/models/instance.rb:52:in `parts'
C:/Games/Jebretary/src/app/models/craft.rb:137:in `update_part_data'
C:/Games/Jebretary/src/app/controllers/crafts_controller.rb:23:in `block (2 levels) in show'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/responder.rb:230:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/responder.rb:230:in `default_render'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/responder.rb:160:in `to_html'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/responder.rb:153:in `respond'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/responder.rb:146:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/mime_responds.rb:239:in `respond_with'
C:/Games/Jebretary/src/app/controllers/crafts_controller.rb:19:in `show'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/abstract_controller/base.rb:167:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/rendering.rb:10:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/abstract_controller/callbacks.rb:18:in `block in process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:414:in `_run__191164094__process_action__844163902__callbacks'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:405:in `__run_callback'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:81:in `run_callbacks'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/abstract_controller/callbacks.rb:17:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/rescue.rb:29:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/notifications.rb:123:in `block in instrument'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/notifications.rb:123:in `instrument'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/instrumentation.rb:29:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activerecord-3.2.13/lib/active_record/railties/controller_runtime.rb:18:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/abstract_controller/base.rb:121:in `process'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/abstract_controller/rendering.rb:45:in `process'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal.rb:203:in `dispatch'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal.rb:246:in `block in action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:73:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:36:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/journey-1.0.4/lib/journey/router.rb:68:in `block in call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/journey-1.0.4/lib/journey/router.rb:56:in `each'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/journey-1.0.4/lib/journey/router.rb:56:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:612:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/etag.rb:23:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/conditionalget.rb:25:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/head.rb:14:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/params_parser.rb:21:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/flash.rb:242:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/session/abstract/id.rb:210:in `context'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/session/abstract/id.rb:205:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/cookies.rb:341:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activerecord-3.2.13/lib/active_record/query_cache.rb:64:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:405:in `_run__30634348__call__1013590577__callbacks'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:405:in `__run_callback'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:81:in `run_callbacks'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/rack/logger.rb:32:in `call_app'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/rack/logger.rb:16:in `block in call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/tagged_logging.rb:22:in `tagged'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/rack/logger.rb:16:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/request_id.rb:22:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/methodoverride.rb:21:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/runtime.rb:17:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/cache/strategy/local_cache.rb:72:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/lock.rb:15:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/static.rb:63:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:136:in `forward'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:245:in `fetch'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:185:in `lookup'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:66:in `call!'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:51:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/engine.rb:479:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/application.rb:223:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/content_length.rb:14:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/rack/log_tailer.rb:17:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/connection.rb:81:in `block in pre_process'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/connection.rb:79:in `catch'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/connection.rb:79:in `pre_process'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/connection.rb:54:in `process'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/connection.rb:39:in `receive_data'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.3-x86-mingw32/lib/eventmachine.rb:187:in `run_machine'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.3-x86-mingw32/lib/eventmachine.rb:187:in `run'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/backends/base.rb:63:in `start'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/server.rb:159:in `start'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/handler/thin.rb:13:in `run'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/server.rb:268:in `start'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/commands/server.rb:70:in `start'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/commands.rb:55:in `block in <top (required)>'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/commands.rb:50:in `tap'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/commands.rb:50:in `<top (required)>'
C:/Games/Jebretary/src/script/rails:7:in `require'
C:/Games/Jebretary/src/script/rails:7:in `<main>'

Link to comment
Share on other sites

*snip

The offending char is a superscript 2. Interestingly KSP fails at displaying it correctly. Anyway, fixing the cfg got rid of the error. (I still belive it should be handled gracefully like by printing an error and pretending the part wasn't there)

Hmm, wonder if my utf is related to that also. Anyway, ill look at it all later or tommorow. Friends 40th bday tonight so if it goes like mine did, ill be in pain for a few days.

I did click on my ship that it did take to see what one it was and got this error. I havent compared it to the one above me, but im suspecting its pretty simular.

Ok I've got a quick fix for you guys;

This zip contains two .rb files that need to replace the existing ones. Just unpack the src folder in the zip into the root dir of Jebretary

http://www./download/153a5vn7bru2sd6/Jebretary0.2.2_patch.zip

That should now deal with part.cfg files that have non UTF-8 chars. The string is now read as ASCII-8BIT which seems to work ok now.

So that part from HabitatPack should be fine without you needing to edit it.

The parts from DRE should be detected correctly now too. Some parts have "_" in their part.cfg but in the craft file the _ is replaced with ".". That was fine, but these parts used both '.' and '_' in their part.cfg which was what was tripping this up.

I've also added some basic error handling in the part detection section (although the lack of error handling did make it easier for you guys to give me useful stack traces!). Will have to add a proper error log now! If it fails to read a part.cfg file it will just think that the part doesn't exist and report that the craft has a missing part.

Anyway hope that sorts it for you.

I will merge these into a 0.2.3 release that publish that soon (tomorrow probably, but now I must actually play some KSP!)

Enjoy the party thrandisher, just don't do anything Jeb wouldn't do!

Link to comment
Share on other sites

Ok, applied hotfix there and now i get this error


#<TypeError: can't convert Symbol into Integer>
C:/Games/Jebretary/src/app/models/part_parser.rb:122:in `[]'
C:/Games/Jebretary/src/app/models/part_parser.rb:122:in `block in index_parts'
C:/Games/Jebretary/src/app/models/part_parser.rb:122:in `map'
C:/Games/Jebretary/src/app/models/part_parser.rb:122:in `index_parts'
C:/Games/Jebretary/src/app/models/part_parser.rb:16:in `initialize'
C:/Games/Jebretary/src/app/models/instance.rb:52:in `new'
C:/Games/Jebretary/src/app/models/instance.rb:52:in `parts'
C:/Games/Jebretary/src/app/models/craft.rb:137:in `update_part_data'
C:/Games/Jebretary/src/app/controllers/crafts_controller.rb:23:in `block (2 levels) in show'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/responder.rb:230:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/responder.rb:230:in `default_render'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/responder.rb:160:in `to_html'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/responder.rb:153:in `respond'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/responder.rb:146:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/mime_responds.rb:239:in `respond_with'
C:/Games/Jebretary/src/app/controllers/crafts_controller.rb:19:in `show'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/abstract_controller/base.rb:167:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/rendering.rb:10:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/abstract_controller/callbacks.rb:18:in `block in process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:414:in `_run__402654864__process_action__738654833__callbacks'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:405:in `__run_callback'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:81:in `run_callbacks'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/abstract_controller/callbacks.rb:17:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/rescue.rb:29:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/notifications.rb:123:in `block in instrument'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/notifications.rb:123:in `instrument'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/instrumentation.rb:29:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activerecord-3.2.13/lib/active_record/railties/controller_runtime.rb:18:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/abstract_controller/base.rb:121:in `process'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/abstract_controller/rendering.rb:45:in `process'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal.rb:203:in `dispatch'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal.rb:246:in `block in action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:73:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:36:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/journey-1.0.4/lib/journey/router.rb:68:in `block in call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/journey-1.0.4/lib/journey/router.rb:56:in `each'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/journey-1.0.4/lib/journey/router.rb:56:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:612:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/etag.rb:23:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/conditionalget.rb:25:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/head.rb:14:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/params_parser.rb:21:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/flash.rb:242:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/session/abstract/id.rb:210:in `context'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/session/abstract/id.rb:205:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/cookies.rb:341:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activerecord-3.2.13/lib/active_record/query_cache.rb:64:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:405:in `_run__283255758__call__765262922__callbacks'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:405:in `__run_callback'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:81:in `run_callbacks'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/rack/logger.rb:32:in `call_app'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/rack/logger.rb:16:in `block in call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/tagged_logging.rb:22:in `tagged'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/rack/logger.rb:16:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/request_id.rb:22:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/methodoverride.rb:21:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/runtime.rb:17:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/cache/strategy/local_cache.rb:72:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/lock.rb:15:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/static.rb:63:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:136:in `forward'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:245:in `fetch'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:185:in `lookup'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:66:in `call!'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:51:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/engine.rb:479:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/application.rb:223:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/content_length.rb:14:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/rack/log_tailer.rb:17:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/connection.rb:81:in `block in pre_process'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/connection.rb:79:in `catch'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/connection.rb:79:in `pre_process'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/connection.rb:54:in `process'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/connection.rb:39:in `receive_data'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.3-x86-mingw32/lib/eventmachine.rb:187:in `run_machine'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.3-x86-mingw32/lib/eventmachine.rb:187:in `run'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/backends/base.rb:63:in `start'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/server.rb:159:in `start'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/handler/thin.rb:13:in `run'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/server.rb:268:in `start'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/commands/server.rb:70:in `start'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/commands.rb:55:in `block in <top (required)>'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/commands.rb:50:in `tap'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/commands.rb:50:in `<top (required)>'
C:/Games/Jebretary/src/script/rails:7:in `require'
C:/Games/Jebretary/src/script/rails:7:in `<main>'

Went into first save, deleted the 1 ship i had in there on autosave, launched this again and then got this error. There are 0 saved file ships in that save game instance.




Jebretary - A Persistent Git

available on 10.0.0.3:3000 on your local network

Katateochi
#<Errno::ENOENT: No such file or directory - G:/KSP/saves/Sandbox Relaxation/Ships/VAB/Auto-Saved Ship.craft>
C:/Games/Jebretary/src/app/models/craft_file_reader.rb:6:in `initialize'
C:/Games/Jebretary/src/app/models/craft_file_reader.rb:6:in `open'
C:/Games/Jebretary/src/app/models/craft_file_reader.rb:6:in `initialize'
C:/Games/Jebretary/src/app/models/craft.rb:33:in `new'
C:/Games/Jebretary/src/app/models/craft.rb:33:in `parts'
C:/Games/Jebretary/src/app/models/craft.rb:137:in `update_part_data'
C:/Games/Jebretary/src/app/controllers/crafts_controller.rb:23:in `block (2 levels) in show'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/responder.rb:230:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/responder.rb:230:in `default_render'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/responder.rb:160:in `to_html'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/responder.rb:153:in `respond'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/responder.rb:146:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/mime_responds.rb:239:in `respond_with'
C:/Games/Jebretary/src/app/controllers/crafts_controller.rb:19:in `show'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/abstract_controller/base.rb:167:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/rendering.rb:10:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/abstract_controller/callbacks.rb:18:in `block in process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:414:in `_run__402654864__process_action__738654833__callbacks'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:405:in `__run_callback'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:81:in `run_callbacks'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/abstract_controller/callbacks.rb:17:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/rescue.rb:29:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/notifications.rb:123:in `block in instrument'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/notifications.rb:123:in `instrument'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/instrumentation.rb:29:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activerecord-3.2.13/lib/active_record/railties/controller_runtime.rb:18:in `process_action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/abstract_controller/base.rb:121:in `process'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/abstract_controller/rendering.rb:45:in `process'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal.rb:203:in `dispatch'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal.rb:246:in `block in action'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:73:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:36:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/journey-1.0.4/lib/journey/router.rb:68:in `block in call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/journey-1.0.4/lib/journey/router.rb:56:in `each'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/journey-1.0.4/lib/journey/router.rb:56:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:612:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/etag.rb:23:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/conditionalget.rb:25:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/head.rb:14:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/params_parser.rb:21:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/flash.rb:242:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/session/abstract/id.rb:210:in `context'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/session/abstract/id.rb:205:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/cookies.rb:341:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activerecord-3.2.13/lib/active_record/query_cache.rb:64:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:405:in `_run__283255758__call__765262922__callbacks'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:405:in `__run_callback'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/callbacks.rb:81:in `run_callbacks'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/rack/logger.rb:32:in `call_app'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/rack/logger.rb:16:in `block in call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/tagged_logging.rb:22:in `tagged'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/rack/logger.rb:16:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/request_id.rb:22:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/methodoverride.rb:21:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/runtime.rb:17:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/cache/strategy/local_cache.rb:72:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/lock.rb:15:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/static.rb:63:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:136:in `forward'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:245:in `fetch'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:185:in `lookup'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:66:in `call!'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:51:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/engine.rb:479:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/application.rb:223:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/content_length.rb:14:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/rack/log_tailer.rb:17:in `call'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/connection.rb:81:in `block in pre_process'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/connection.rb:79:in `catch'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/connection.rb:79:in `pre_process'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/connection.rb:54:in `process'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/connection.rb:39:in `receive_data'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.3-x86-mingw32/lib/eventmachine.rb:187:in `run_machine'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.3-x86-mingw32/lib/eventmachine.rb:187:in `run'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/backends/base.rb:63:in `start'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/server.rb:159:in `start'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/handler/thin.rb:13:in `run'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/server.rb:268:in `start'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/commands/server.rb:70:in `start'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/commands.rb:55:in `block in <top (required)>'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/commands.rb:50:in `tap'
C:/Games/Jebretary/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/commands.rb:50:in `<top (required)>'
C:/Games/Jebretary/src/script/rails:7:in `require'
C:/Games/Jebretary/src/script/rails:7:in `<main>'

Now i can somewhat understand the reason for the 2nd one. Althought it does close down liquid.

Im not really moving to well today. My brain thought i was 21 last night and my body said WHOA WHOA WHOA wth are you doing to me. Hopefully i didnt let jeb down!

Another long story short. Ive been giving my friend hand me down video cards for 15 years, he updated his system today and i have his old mb/cpu as a handme down so i might be mia for few days. not much of a upgrade but since my heatsink died of old age and its just resting with nothing holding it down on my cpu, its a upgrade, lol. Im sure i made macgyver proud on my jerry rigging skills untill i could replace things. ;)

Link to comment
Share on other sites

Ok, applied hotfix there and now i get this error

snip*

ok that's annoying, that really shouldn't cause that error! grrr. sorry about this!

There is a new version (0.2.3) which includes the above patch and a couple other minor changes. Try wiping your current Jebretary install and then installing 0.2.3.

Re the error caused by a deleted craft, I've realised that there is a problem in detecting craft that where deleted while Jebretary was not running. I'll try to fix that after work today. You could just create an empty file for the missing Auto-Saved Ship.craft in that campaign and that should stop the error from occurring.

Link to comment
Share on other sites

heh, np. figured it was just a sanity check someplace.

Pretty much everything that can go wrong with switching ove hardware happened. Old dirty trick on switching hardware didnt work so off to do a new install of windows. yay, love spending all day d/l patches and updates. ;)

Link to comment
Share on other sites

heh, np. figured it was just a sanity check someplace.

Pretty much everything that can go wrong with switching ove hardware happened. Old dirty trick on switching hardware didnt work so off to do a new install of windows. yay, love spending all day d/l patches and updates. ;)

or an insanity check! actually, could you tell me what mods you run with, so I can try and replicate the error for myself. It happens when reading in the parts from GameData so I'm guessing you must have a mod with a slightly different .cfg layout (or something) to be getting that error.

I'm going to build some better error logging in so when it does fail it will say which mod it failed on (where possible). Not had any time today to code on this project thou :(

yeah installing win is a pain, I recently had to do that, it took about 8 reboots and well over 6 hours of waiting for updates. by comparison installing ubuntu took about 30-40 mins with 1 reboot! Good luck with your rebuild.

Link to comment
Share on other sites

Well i havent tried 0.2.3 yet but this looks to be my mod list at the time of that last error i posted. Hmm, kindof long, maybe i should do it as a spoiler ;)


Toolbar
Action Group Manager
Active Texture Management
b9 Aerospace
Habitat
Achievements
Ambient Light Adjustment
H.o.m.e.
Connected Living Space
Deadly Reentry
Distance Object
Extraplanetary Launchpards
FAR
Safeshute
Hull Camera VDS
MDF
Raster Prop Monitor
Kas
Procedural Fairings
Hyperedit (shhhh, dont tell anyone but i suck at this game sometimes)
Kethane
KWRocketry
Mechjeb
MechjebRPM
Versatile Toolbox System
Navball Texture Export (from proots gfx compalation)
Final Frontier
Part Catalog
Realchute
Scansat
science Alert
Ship Manifest
Simple Part Organizer
Tac Fuel Balancer
Targetron
Texture Replacer
Tac Life Support
Kerbal Alarm CLock
KSP Alternate Resource Panel
Floorit
Research Them All
MKS
Universal Storage
Vessel View
VNG
Void
Module Manager 2.0.8

There are a few i know with updates that ill be doing when im finally installed.

I kindof miss *nix. Last time i really used it was with s.u.s.e. i think back in the late 90's. I thought of tossing in Ubuntu and even grabed 14.04 and burnt off to a dvd just after i started this install. Like normal i had the worst time changing hardware. What finally worked was loading bios default which loaded up the same exsact settings i had, but when i manually did it. win 7 would ether lock up after 5 minutes or if i went to safe mode i was stable. Makes me miss old dos sometimes. Things just worked back then. Or maybe i just didnt realized they didnt work because i was making a sandwich while waiting for things to load up ;)

Link to comment
Share on other sites

ok got another patch which should stop the program from crashing if it can't read information from a particular part. Also added a basic error logger that will collect info about which parts it was unable to read.

Unpack this into the root of Jebretary (assuming that you have 0.2.3 installed)

http://www./download/3ficoy7b8xckye8/Jebretary0.2.3_patch_to_0.2.4.zip

Use full install instead of the patch. link below.

Now if you find you have a part that is not being detected the send me your error.log file

To send your error log; click here and drag the error.log from from Jebretary's root folder onto the web page.

Then click "Start Uploading Files" and you will be prompted to enter a description, put your forum user name in so I know who sent me the log.

Then delete the error.log from from Jebretary.

I will then pull out tufts of my hair and run around in small circles (also known as debugging) and then get back to you.

EDIT

I've now put a full install for 0.2.4 up, so don't use the patch, just do a fresh install

Download Jebretary 0.2.4

Edited by katateochi
Link to comment
Share on other sites

where do i type my install directory the run ksp and jeb will find it dosnt work and i cant type in either of the boxes that are open http://imgur.com/Hjo9sFu

You have to open a browser window. Use the address`127.0.0.1:3000` and the box to input is there in the browser.

Also if you go there in your browser the option to autodetect is there as well.

I use my laptop to look at my main machine over the network. My main machine has the IP 192.168.0.4 and so for me I go to 192.168.0.4:3000

Edited by John FX
updating subscription options
Link to comment
Share on other sites

where do i type my install directory the run ksp and jeb will find it dosnt work and i cant type in either of the boxes that are open http://imgur.com/Hjo9sFu

Yeah as John FX said, you interface with Jebretary through your browser (chrome or firefox is best, IE is ok if its IE10+). You can put either 127.0.0.1:3000 or localhost:3000 (which I find easier to remember/type) into the address bar to connect.

Link to comment
Share on other sites

Ok, Using 0.2.4 and so far ok! I was watching liquid as i booted up and did see 1 error, but, it was with persistant save and on its next check/routine it did, everything was fine with that.

I looked at all my crafts for my campaign and did see 1 that had a couple invalid parts, but looking at the part name doesnt ring a bell. Ill dig deeper into it later on after im less groggy. That ship is also one i grabed off spaceport im assuming since its not a name i did, so the chances of it actually needing something i dont have installed is pretty darn high.

Ill do my thing and see if i can break this for ya after i go get some coffee. ;) Everything is looking nice now tho.

Link to comment
Share on other sites

yep that did it thanks... and thanks for the app its more than i expected from reading the OP good work

Thanks man.

yeah me.describe_code_well == false

If you have any suggestions about how I can improve the OP that would be really helpful. I either go into way way too much detail and try to explain everything, or I cut it short. Some kinda middle ground needed I think!

Ok, Using 0.2.4 and so far ok! I was watching liquid as i booted up and did see 1 error, but, it was with persistant save and on its next check/routine it did, everything was fine with that.

I looked at all my crafts for my campaign and did see 1 that had a couple invalid parts, but looking at the part name doesnt ring a bell. Ill dig deeper into it later on after im less groggy. That ship is also one i grabed off spaceport im assuming since its not a name i did, so the chances of it actually needing something i dont have installed is pretty darn high.

Ill do my thing and see if i can break this for ya after i go get some coffee. ;) Everything is looking nice now tho.

[mr burns voice] Excellent! [/]

Re that error you saw with the persistent file, that happens if KSP is reading/writing to the persistent file when Jebretary tries to read it, so it just backs out of the way so as not to upset KSP.

Unfortunately when you are missing a part the best I can do is tell you what the part name from the craft file is. And sometimes that doesn't really help at all with some mods!

But there are plans in the pipe; When I get the on-line companion site for this up and running your copies of Jebretary will send a mapping of known parts and mods from your installs (assuming you agree) to the site which will gradually build up a larger map of mod parts. Then when your local program can't find a part it will ask the on-line site if it knows about it. So if a fellow Jebretary user has that mod you all will benefit from a wider knowledge base.

Link to comment
Share on other sites

I don't know if it has been mentionned, but Jebretary fails to launch KSP from a Steam directory, probably because of spaces in the path: it seems to fail at C:\Program.

Excellent application! Would be good if running launch.exe would offer opening a new tab in the browser at localhost:3000, or even better, if it was possible to run launch.exe by clicking on a bookmark leading to localhost:3000 in the browser (is it possible with bookmarklets to run X:\PathToJebretary\launch.exe or stuff like that? I guess that would be a serious security issue if it was, but it's worth asking).

Edited by Korb Biakustra
Link to comment
Share on other sites

I don't know if it has been mentionned, but Jebretary fails to launch KSP from a Steam directory, probably because of spaces in the path: it seems to fail at C:\Program.

Excellent application! Would be good if running launch.exe would offer opening a new tab in the browser at localhost:3000, or even better, if it was possible to run launch.exe by clicking on a bookmark leading to localhost:3000 in the browser (is it possible with bookmarklets to run X:\PathToJebretary\launch.exe or stuff like that? I guess that would be a serious security issue if it was, but it's worth asking).

Ah a steam user, excellent! I don't have KSP on steam so I've not been able to test that. I shall look into why its not able to launch, if its just the spaces thing that should be easy to fix. Could you tell me what path your KSP is installed on, so I can create a similar setup to test.

Does everything else work ok thou?

I think I can make the launch.exe open up a tab in your default browser, I will add that in and I'll make it an option that you can disable in Jebretary's settings. I don't think it could work the other way round thou, as you say, security restrictions would prevent that I think.

I'll also look into having a button in the interface that can shutdown the two terminals, but that will be a bit trickier.

Thanks for the feedback.

Link to comment
Share on other sites

I do think it comes from the space: using another instance with spaces in the path, the error message says it blocked after the first word followed by a space, just like with the Steam path. Here are the two file paths:

- C:\Program Files (x86)\JEUX\Steam\SteamApps\common\Kerbal Space Program

- D:\Zone de tri\Kerbal Space Program - Multimonitor

Everything else seems to work but I have not had to recover any save or ship so far, so Jebretary just does its job in the background and I did not really play with the version history interface.

Thanks for the "open tab" option! An option to close the two terminals would be nice too, indeed. Would it be possible to minimize them to tray when they're running?

Link to comment
Share on other sites

Hey, just wondering: is it possible to use Jebretary to configure synchronization among different installation folders and computers?

Typically, I have KSP installed on my desktop computer and my laptop, the latter being used at work (well, not for KSP :o) or during travel, train trips, and so on. Keeping sync between the saves, ships and mods of both installations is really a hassle. If Jebetrary could identify the git "identity", the computer-name, and recognize "Campaign" names, it could offer an option to synchronize the campaigns of both computers (or KSP instance on different computers, to be exact) based on git (shared) history.

A complementary and extremely useful feature would be "GameData" synchronization. Seriously, this would be epic. Perhaps there are not so much users using different computers to play KSP, but for them, it would be terrific. That may be a bit too far for now, but one could even imagine synchronizing GameData folders among a couple of friends, or perhaps KMP/DMP players of given servers.

Does that sound useful to you? Doable? Insane? Better to do it using individual Github/Bitbucket accounts and scripts without Jebretary?

Edited by Korb Biakustra
Link to comment
Share on other sites

@Korb Biakustra, sorry for slow reply, I've been away for a couple days.

Here is a small patch that will fix the issue with spaces in the path. Unpack the zip into the root of Jebretary and replace all.

re the sync to other installs/folders - I've got some plans that might partly meet your suggestion.

First there will be the ability to specify individual craft (and subassemblies) that will be mirrored between different tracked campaigns (and installs). That will just enable you to have select craft that are present in several campaigns and any changes made to it in one campaign will be reflected in the others. The limitation with this is that it will only mirror craft between campaigns that are in installs on the same machine.

Then there will be a whole campaign backup feature that will backup a campaign (and its full history) to any other folder (including a network location). But this is not a sync feature as its only in one direction (to the backup).

It would be possible to sync campaigns that are on the same machine, doing it to network locations becomes much trickier.

If the two campaigns are on the same machine changes can be reflected instantly so there'd be no chance that you could make conflicting changes in both campaigns. The problem with syncing to a location that might go offline is that craft/saves in both campaigns could be changed between a sync and then there would be conflicts. git is designed to deal with conflicts but it does it line by line and with craft and saves files this doesn't work well and conflict resolutions are tricky.

That's not to say its not possible, I need to look into some more about forcing conflict resolutions in git, it would be a very nice feature to have.

GameData folder syncing is something I've wondered about, but for now I've decided not to do it because of the overhead it would require. If you create a git repo in the GameData folder it effectively takes a snapshot of how things are when you create the repo, a) that would double the required storage space and B) I think KSP might have a fit as it would probably try to load things from inside the hidden .git folder where the repo lives (I'm not sure about that, not tested this yet).

The latter could be got around by creating the repo in the root of KSP and telling it to just track the GameData folder and ignore the others, but you'll still have the space overhead. This is also made worse by the way that git works to never throw anything away. Once something is committed in a git repo it is there forever. So if you update a mod and some textures are updated (and just the datestamps changing would be enough) then you'd have the original texture and the new one stored in the repo. git is really intended for use with code where it can track just the individual line changes, but with things like texture files it can't do that so even if just the date has changed it has to store the whole file again. basically it would mean a repo that balloons in size.

It works well for craft files because when you add a new part to a craft it doesn't take an entire new copy of the craft file, it just stores the lines in the craft file that changed between versions so its very space efficient for tacking craft/save files. But with complied files like textures or other binaries its not efficient. It would be a cool feature, but for now I don;t think its doable in a clean, reliable way (I'll ponder it some more thou).

Link to comment
Share on other sites

Thanks for the detailed answer Katateochi (and the patch)! I do understand the potential limitations, though those features would really be terific. Mirroring crafts and subassemblies is a great idea. Maybe the synchronization among different machines could just require user confirmation and offer to take the last modified file as a reference? It would not do miracles when an user has modified two save files without Internet connection on two different machines, but it will still synchronize the two computers most of the time based on the up-to-date save file on the cloud. A warning should tell the user not to load the same save from two different machines connected to the Internet and to Jebretary simultaneously, but that would be a weird behaviour anyway.

I got trouble using Jebretary the last few days. For some reason, it didn't successfully store my quicksave or persistent saves, although I did change them by playing during the week-end. Jebretary was running, but couldn't go further than the red message stating something like "Wait till I commit your quicksave..." Crafts were not stored anymore either. I have tried restarting Jebretary, or even reinstalling and reconfiguring the associated KSP instance, but nothing worked. I don't know if it is related, but only one of the two terminals stayed open, the other one always closed after a few seconds.

I just got back from work and launched Jebretary again, it apparently successfully updated the quicksave this time, but you can see that there was a gap of several days just before that. Liquid.exe closed by itself again after a few seconds. KSP is not running yet.

suV2gEWl.jpg

Edited by Korb Biakustra
Link to comment
Share on other sites

@Korb Biakustra; If liquid.exe is crashing then that is why your saves are not being tracked. Infact no changes (craft or save) will be being tracked without liquid. liquid.exe does all the tracking and automatic incrementing of versions, oxidizer.exe runs the web server that provides the interface.

Can you watch what happens in liquid for me and tell me what it says. It will say !!monitor error!! and then directly after that it should say an error. When it has had 5 errors in a row it will close.

If you could tell me what the error message after !!monitor error!! is I will track down what the problem is.

I'm guessing that it is to do with reading the parts of your installed mods or when reading the craft files part data. I notice that some of your craft have not had their parts identified as they are not coloured in the list so I'm guessing its hitting a particular part that it can't read and failing. If that's the case there should also be an error.log file in the root of Jebretary. can you upload that error log here, when it asks for a description just put your forum name so I know who its from.

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...