Skip to content

Instantly share code, notes, and snippets.

@Bhacaz
Created July 4, 2024 18:30
Show Gist options
  • Select an option

  • Save Bhacaz/927efc27c5f04d1f25534dc2c8c9a160 to your computer and use it in GitHub Desktop.

Select an option

Save Bhacaz/927efc27c5f04d1f25534dc2c8c9a160 to your computer and use it in GitHub Desktop.
Single file Rails
require 'bundler/inline'
gemfile do
gem 'activerecord', require: 'active_record'
gem 'sqlite3', '~> 1.4'
end
ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: ':memory:'
ActiveRecord::Base.logger = Logger.new STDOUT
ActiveRecord::Schema.define do
create_table :users
create_table :posts do |t|
t.references :user, null: false, index: true
t.string :title, null: false
end
end
class User < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
belongs_to :user
end
user = User.create!
post = Post.create! user: user, title: "First"
binding.irb
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'activerecord', require: 'active_record'
gem 'sqlite3', '~> 1.4'
gem 'rspec'
end
ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: ':memory:'
ActiveRecord::Base.logger = Logger.new STDOUT
ActiveRecord::Schema.define do
create_table :users
create_table :posts do |t|
t.references :user, null: false, index: true
t.string :title, null: false
end
end
class User < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
belongs_to :user
end
require 'rspec/autorun'
RSpec.describe do
it "count" do
User.create!
expect(User.count).to eq(1)
end
end
# rackup rails_app.ru
require "bundler/inline"
gemfile do
gem "rack", "~> 2.0"
gem "rails", "~> 7.1"
gem "sqlite3", '~> 1.4'
end
require "rails/all"
database = "development.sqlite3"
ENV["DATABASE_URL"] = "sqlite3:#{database}"
ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: database
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Schema.define do
create_table :posts, force: true do |t|
t.text :content
end
create_table :comments, force: true do |t|
t.integer :post_id
t.text :content
end
end
class App < Rails::Application
config.root = __dir__
config.load_defaults 7.1
config.consider_all_requests_local = true
config.secret_key_base = "i_am_a_secret"
config.log_level = :debug
config.logger = Logger.new(STDOUT)
config.eager_load = false
routes.append do
root to: "posts#index"
end
end
class Post < ActiveRecord::Base
has_many :comments
def as_json(options = {})
super.tap do |json|
json[:comments] = comments
end
end
end
class Comment < ActiveRecord::Base
belongs_to :post
end
post = Post.create!(content: "Hello, world!")
post.comments.create!(content: "First comment")
class PostsController < ActionController::Base
def index
render json: Post.all
end
end
App.initialize!
run App
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment