Hacker News new | ask | show | jobs
by cassiogo 720 days ago
Not that I think this is pratical or even looks good, but its also doable with rails

  require 'bundler/inline'

  gemfile(true) do
    source 'https://rubygems.org'

    gem 'rails', '~> 7.1'
    gem "sqlite3", "~> 1.4"
  end

  require 'rails'
  require 'active_record/railtie'
  database = 'app_development.sqlite3'

  ENV['DATABASE_URL'] = "sqlite3:#{database}"
  ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: database)
  ActiveRecord::Schema.define do
    create_table :my_table, force: true do |t|
      t.integer :my_table_id
    end
  end

  class App < Rails::Application
    routes.append do
      root to: 'home#index'
    end
  end

  class HomeController < ActionController::Base
    def index
      render inline: 'HOME'
    end
  end

  App.initialize!

  run App
For very small apps on ruby land sinatra and roda are the right choices. On python the choice would be flask instead of the single file django.
1 comments

Is the db mandatory in Rails or could the db specific lines be removed from the code if no db is needed?
Not mandatory, you could remove that
Cool. What would be the steps from a fresh Debian to get it running and see it in action?
Not sure debian has (a modern) ruby installed by default, but I think you only need to have a working ruby installation and running the script. On a sidenote, this came out recently and could interest you https://dashbit.co/blog/announcing-phoenix-playground
I tried it like this:

    1: apt install ruby
    2: Put your code in test.rb
    3: ruby test.rb
I then I got:

    Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
    \e[0m
        current directory: /var/lib/gems/3.1.0/gems/stringio-3.1.1/ext/stringio
    /usr/bin/ruby3.1 -I /usr/lib/ruby/vendor_ruby -r ./siteconf20240626-4044-iylnuy.rb extconf.rb
    mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h

    You might have to install separate package for the ruby development
    environment, ruby-dev or ruby-devel for example.
So I tried:

    4: apt install ruby-dev
    5: ruby test.rb
Then I got:

    [4147, #<Thread:0x00007f9a4af6bc60 run>, #<NameError: uninitialized constant Gem::Source
    (defined?(@source) && @source) || Gem::Source::Installed.new
                                         ^^^^^^^^