
Security News
AGENTS.md Gains Traction as an Open Format for AI Coding Agents
AGENTS.md is a fast-growing open format giving AI coding agents a shared, predictable way to understand project setup, style, and workflows.
Integrate your Rust+Ruby thermite projects into Rails. Like helix-rails, but for thermite.
First things first: much of this project was initially "borrowed" from
helix and helix-rails
, which are wonderful
projects for getting Rust and Ruby working together--you should check them out.
Specs |
---|
There are two Rails generators that get you doing Rust-y things in your Rails app.
thermite:install
This does one simple thing: adds a line to config/environments/development.rb
that checks to see if your crates have been updated since the last time you
built them; if any of them have been updated, you'll get an exception letting
you know.
$ rails generate thermite:install
...adds the following to config/environments/development.rb
:
config.thermite.outdated_error = :page_load
thermite:crate [crate-name]
This generates a new Rust+Ruby project for you in [Rails.root]/crates/[crate-name]
.
The Rubygem part of the project is created using bundle gem [crate-name]
; the
Rust part of the project is created using crate new [crate-name]
. Most of the
basic stuff that thermite
has you do for setting up is done for you.
One main difference from thermite
's instructions, however, is that it does
not set up the same test
Rake task that thermite
says to. This is because
thermite-rails
defines its own set of tasks for you. You can, of course,
override those if you need to.
Lastly, it also:
publish = false
so you don't accidentally publish it to
crates.io
.crate-type = ["cdylib"]
, assuming you'll use something like
ruru +
fiddle for initializing your Rust+Ruby.thermite-rails
defines a task for building, cleaning, updating, and (cargo)
testing a) all of your projects at once, b) each of your projects separately.
thermite:build_all
, thermite:build:[crate-name]
leverage thermite
's
thermite:build
task.thermite:clean_all
, thermite:clean:[crate-name]
leverage thermite
's
thermite:clean
task.thermite:test_all
, thermite:test:[crate-name]
leverage thermite
's
thermite:test
task.thermite:update_all
, thermite:update:[crate-name]
are only defined in
thermite-rails
. This simply runs cargo update
for each of your crates.If you have rspec
in your stack, you'll also get spec:crates
and
spec:crates:[crate-name]
, where the latter will ensure
thermite:build:[crate-name]
is run before (to make sure specs are run against
the latest Rust code). If you want to run all tests (Rust and Ruby ones) when
you run rake spec
, add this to the Rakefile
in the root of your Rails
project:
Rake::Task['spec'].enhance do
Rake::Task['spec:crates'].invoke
end
Note that Rake tasks will only be available for crates in crates/
that use
thermite
. You can add Rust-only crates under crates/
(perhaps you want to
keep your crates/projects slim and extract out some functionality?) or use
helix along side thermite
/thermite-rails
.
Add this line to your application's Gemfile:
gem 'thermite-rails'
And then execute:
$ bundle
$ rails generate thermite:install
...then go add some crates/projects to your app:
$ rails generate thermite:crate new_fast_thingy
After checking out the repo, run bin/setup
to install dependencies. Then, run
rake spec
to run the tests. You can also run bin/console
for an interactive
prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To
release a new version, update the version number in version.rb
, and then run
bundle exec rake release
, which will create a git tag for the version, push
git commits and tags, and push the .gem
file to rubygems.org.
Everyone interacting in the Thermite::Rails project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.
The gem is available as open source under the terms of the MIT License.
FAQs
Unknown package
We found that thermite-rails 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.
Security News
AGENTS.md is a fast-growing open format giving AI coding agents a shared, predictable way to understand project setup, style, and workflows.
Security News
/Research
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.