Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Include useful standard libraries (JSON, Set, Observable, etc.) #14

Open
collin opened this issue May 6, 2013 · 12 comments
Open

Include useful standard libraries (JSON, Set, Observable, etc.) #14

collin opened this issue May 6, 2013 · 12 comments
Labels

Comments

@collin
Copy link

collin commented May 6, 2013

require 'set'
>>> "NoMethodError: undefined method `require' for #<Window:0x007f9ff2c33108>"
Kernel.require 'set'
>>> "LoadError: cannot load such file -- set"
Kernel.require 'observable'
>>> "LoadError: cannot load such file -- observable"

I get something like net/http not being available, as the DOM provides interfaces. But things like Set and Observable ought to be available, no?

@timimahoney
Copy link
Owner

Good point. It would be nice to have modules like Set, Observable, and JSON. The problem is figuring out where to load them from. Either the files can be distributed in the application bundle and loaded from there, or they can be compiled and linked statically with the project. I believe I'd like to link them statically, since then we can ensure that everything works. Then, the problem is deciding which libraries to include. Any thoughts?

By the way, this brings up a security issue. I thought I had undefined require along with methods like exit!, but apparently not all the way. This commit should take care of that.

@collin
Copy link
Author

collin commented May 6, 2013

Taking a quick peek at lib/ from ruby...

  • set
  • observable
  • json
  • uri
  • ostruct
  • securerandom
  • base64
  • csv
  • delegator
  • erb
  • forwardable

Probably others but that's what jumped out the most in quick look at 'lib/'. Probably okay to miss things as long as a clear way to include stdlib code is introduced so missing bits can be added later, right?

@collin
Copy link
Author

collin commented May 6, 2013

Also, to go off topic on this ticket. Absolutely loving being able to play around with the DOM in Ruby. Match made in heaven.

@timimahoney
Copy link
Owner

I'll look into including some or all of these libraries soon. I never knew about OpenStruct, and that might be a nice format to convert JSON to.

Anyway, I'm glad you like it! Making anything cool?

@collin
Copy link
Author

collin commented May 9, 2013

I'm playing with porting concepts I use in a personal js app framework to ruby https://github.com/collin/AlphaSimprini.rb/blob/master/app/assets/javascripts/alpha_simprini/core/view.rb

So far it's a dream.

@timimahoney
Copy link
Owner

Nice! I agree that it's kind of a dream to use Ruby in the browser.

Back to the topic, I'm putting out a new binary soon, but it doesn't have the standard libraries. I'll work on adding these libraries for the next major update.

@senthilnayagam
Copy link

I would love if you could include/load Math library by default, there is no pure ruby version Math library available

@timimahoney
Copy link
Owner

@senthilnayagam Do you mean this Math library? If so, it's already in there. Try Math.cos(Math::PI).

@senthilnayagam
Copy link

Thanks you saved my day :)

@senthilnayagam
Copy link

is there a way to load a local ruby script in the web pages context.

this way I can include my favourite scripts to automate testing, or crawling the pages, there are some javascript based tools like phantomjs which does this with javascript, but a ruby option would be awesome

@senthilnayagam
Copy link

also some way to remotely connect to decaf instance like how pry-remote does with DRB, this way we can script it from a normal ruby script

@timimahoney
Copy link
Owner

I'm not quite sure what you're looking for in the past two comments. Could you elaborate?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants