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.
activerecord-tableless
Advanced tools
A single implementation of the ActiveRecord Tableless pattern for any Rails project or other Ruby project that uses ActiveRecord.
Why would you ever consider this gem as opposed to ActiveModel.
It all started in Rails 2 (see History section). In rails 2 ActiveModel did not exists. Nowadays rails 2.x series is no longer supported.
In Rails 3 there is an Active Model API, where you can use some features of Active Record in other classes. Yehuda Katz has written a nice introduction about this.
In Rails 4 basic features of the Active Model API can be activated by including ActiveModel:Model in the model. Carlos Antônio has written a nice tutorial about this.
However neither the Active Model API (Rails 3) nor the ActiveModel::Model (Rails 4) supports relations and nested attributes.
ActiveRecord Tableless is distributed as a gem, which is how it should be used in your app.
Include the gem in your Gemfile:
gem "activerecord-tableless", "~> 1.0"
Supported ruby version are
If you are using Ruby version < 2.2.2 you can use the gem version < 2.0 like this
gem "activerecord-tableless", "~> 1.0.0"
Supported ActiveRecord versions are
If you are using ActiveRecord 2.3.x series you can use the gem version < 2.0 like this
gem "activerecord-tableless", "~> 1.0.0"
You may be able to make it work with 3.1.x, but you should expect to put some time in it.
Define a model like this:
class ContactMessage < ActiveRecord::Base
has_no_table
column :name, :string
column :email, :string
validates_presence_of :name, :email
end
You can now use the model in a view like this:
<%= form_for :message, @message do |f| %>
Your name: <%= f.text_field :name %>
Your email: <%= f.text_field :email %>
<% end %>
And in the controller:
def message
@message = ContactMessage.new
if request.post?
@message.attributes = params[:message]
if @message.valid?
# Process the message...
end
end
end
If you wish (this is not recommended), you can pretend you have a succeeding database by using
has_no_table :database => :pretend_success
To start develop, please download the source code
git clone git://github.com/softace/activerecord-tableless.git
Install development libraries
sudo apt-get install -y libsqlite3-dev libxml2-dev libxslt-dev
When downloaded, you can start issuing the commands like
gem install bundler -v '~> 1.12.0'
bundle install
bundle update
bundle exec appraisal generate
bundle exec appraisal install
bundle exec appraisal rake all
Or you can see what other options are there:
bundle exec rake -T
gem bump -v pre
Verify everything is OK.
gem build activerecord-tableless.gemspec
Verify everything is OK.
gem release -t
Originally this code was implemented for Rails 2 by Kenneth Kalmer. For Rails 3 the need for this functionality was reduced dramatically due to the introduction of ActiveModel. But because the ActiveModel does not support relations and nested attributes the existence of this gem is still justified.
For a history of technical implementation details feel free to take a look in the git log :-)
Copyright (c) Jarl Friis. See LICENSE.txt for further details.
FAQs
Unknown package
We found that activerecord-tableless demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers 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.