Ruby Digest #34: падіння інтересу до Rails, маскуємо Ruby під JS, стек junior Rails розробника

4 хв. читання

Новини / Релізи

  • Ruby on Rails виходить з гри? Популярний навчальний табір Coding Dojo прибирає Rails з навчальної програми через падіння інтересу до фреймворку

Відео


Статті

Валідний код Ruby:

var first = 3;
  var second = 4;

  var sum = function(a, b) {
    a + b;
  }

  console.log("Sum = ", sum(first, second));

А ось що під капотом:

console = (Class.new { def log(*x); puts x.join(""); end }).new

  define_method(:var) { |random_function_name|
    var_name = local_variables.find do |local_var|
      local_var != :random_function_name && eval(local_var.to_s) == random_function_name
    end
    define_method(var_name) { |*args|
      send(random_function_name, *args)
    }
  }

  class Object
    def method_missing(*args)
      skip_methods = %i(to_a to_hash to_io to_str to_ary to_int)
      return nil if skip_methods.include?(args[0])
      return args[0]
    end
  end

  def function(*args, &block)
    func_name = :"func_#{rand(1000000)}"

    klass = Class.new { attr_accessor *args }
    function_block = Proc.new { |*arg_values|
      obj = klass.new
      args.zip(arg_values).each {|arg, arg_value| obj.send(:"#{arg}=", arg_value) }
      obj.instance_eval(&block)
    }

    define_method(func_name, &function_block)

    func_name
  end

Ruby Digest #34: падіння інтересу до Rails, маскуємо Ruby під JS, стек junior Rails розробника


Інструменти

  • System Tester – інструмент розробки для створення та управління системними тестами в Ruby on Rails >= 5.1

  • Down – gem для віддалених завантажень файлів

  • Giphy API – Ruby бібліотека-обгортка для Giphy API

  • Traim – ресурсно-орієнтований мікрофреймворк для створення RESTful API сервісу з наявних Active Record моделей

Базовий приклад:

# cat hello_traim.rb

Traim.config do |app|
  app.logger = Logger.new(STDOUT)
end

class User < ActiveRecord::Base
end

Traim.application do
  resource :users do
    # Inject user model
    model User

    # Response json: {id: 1, name: "example"}
    attribute :id
    attribute :name

    # POST /users
    action :create

    # GET /users/:id
    action :show

    # PUT /users/:id
    action :update

    # DELETE /users/:id
    action :destory
  end
end

Інше

Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 5.2K
Приєднався: 9 місяців тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація