Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
= rufus-doric
some Ruby lib at the intersection of Rails3, CouchDB and rufus-jig.
== how does rufus-doric determine which Couch database to use ?
At first it determines which CouchDB server to use via this code :
def self.couch_url
if defined?(Rails) # rails config/couch_url.txt
return File.read(Rails.root.join('config', 'couch_url.txt')).strip
end
if File.exist?('couch_url.txt') # current working directory
return File.read('couch_url.txt').strip
end
'http://127.0.0.1:5984' # the default
end
Then the database is determined by calling Rufus::Doric.db(name)
p Rufus::Doric.db('mydb', :url_only => true) # => "http://127.0.0.1:5984/mydb_test"
p Rufus::Doric.db('mydb', :env => 'camelia', :url_only => true) # => "http://127.0.0.1:5984/mydb_camelia"
p Rufus::Doric.db('mydb', :env => 'camelia') # => #<Rufus::Jig::Couch:0x00000102325120 # @http=#<Rufus::Jig::Http:0x00000102324908 @host="127.0.0.1", # @port=5984, @path="/toot_test", ...>...>
In summary, you only have to create a couch_url.txt file that contains the http:://{host}:{port} of your couch server. The rest is taken care of.
== Rufus::Doric::Model usage
One document per instance.
class Item < Rufus::Doric::Model
db :doric
# in which db it goes (remember that an _env suffix is added)
doric_type :items
# 'doric_type' field
_id_field :name
# _id field is determined from field 'name'
h_accessor :name
h_accessor :supplier
validates :supplier, :presence => true
end
There is more, please look at the test/ directory to discover Model.
== Rufus::Doric::OneDocModel usage
I use this for 'users' models.
class User < Rufus::Doric::OneDocModel
db 'doric'
doc_id :users
h_accessor :locale
h_accessor :email
h_reader :password
validates :password, :presence => true
end
It places all the users in one document (whereas Rufus::Doric::Model has 1 document per instance/record).
Look at the test/ directory to learn more about OneDocModel.
== Rufus::Doric::Value usage
Value is about Couch documents containing a single 'value' field (apart from _id and _rev)
Given
class Tuples < Rufus::Doric::Value
doc_id :tuples
db :doric
def to_s
value.sort.join(' ')
end
end
and a document 'tuples' in the database 'doric' :
{ "_id": "tuples", "value": [ "alpha", "bravo", "charly" ] }
this can be done :
p Tuples.load.to_s # => "alpha bravo charly"
tuples = Tuples.load tuples.value << 'borneo' tuples.save!
p Tuples.load.to_s # => "alpha borneo bravo charly"
Also :
tuples = Tuples.new( '_id' => 'tuples', 'value' => %w[ alpha beta delta gamma ]).save!
p Tuples.load.to_s # => "alpha beta delta gamma"
== Rufus::Doric::Value and h_shortcut
Most of the time, I use Rufus::Doric::Value to store a hash of things :
class Misc < Rufus::Doric::Value
doc_id :misc
db :doric
h_shortcut :product_lines
h_shortcut :purposes
end
with :
{ "_id": "misc", "value": { "product_lines" : [ "blue_coat", "ulticom", "znyx" ], "purposes": [ "stock", "non_stock", "replace", "rma", "loan" ] } }
then in my app, I just do
p Misc.product_lines # => [ "blue_coat", "ulticom", "znyx" ]
p Misc.purposes # => [ "stock", "non_stock", "replace", "rma", "loan" ]
== 'fixtures' usage
Given a fixture tree
fixtures
-- test
-- doric
|-- 69247b__picture.jpg
|-- 69249__picture.jpg
|-- product0.json
|-- product1.json
|-- users.json
|-- users__jami.png
`-- users__john.jpg
this
require 'rufus/doric/fixtures' Rufus::Doric::Fixtures.load('http://127.0.0.1:5984', 'fixtures/test')
will load the documents (and their attachements) into http://127.0.0.1:5984/doric_test
== credits
Claudio Petasecca Donati - for all his help.
== license
MIT
FAQs
Unknown package
We found that rufus-doric demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.