Ответы пользователя по тегу Ruby on Rails
  • Rails4, как задать relative_url_root отличный от '/'?

    Fralunia
    @Fralunia Автор вопроса
    В общем закончилась история успехом.

    Оказалось что проблема в маршрутизации была со статическими страницами из-за гема High_Voltage.
    Обойти эту проблему можно, так.
    # config/initializers/high_voltage.rb
    HighVoltage.configure do |config|
      config.routes = false
    end


    В routes.rb указываем scope и заворачиваем high_voltage на свой контроллер.
    (подробнее https://github.com/thoughtbot/high_voltage)
    # config/routes.rb
    Rails.application.routes.draw do
      scope '/appname' do
        #переопределяем дефолтный путь high_voltage на свой Page контроллер 
        get "/pages/*id" => 'pages#show', as: :page, format: false
        
        resources :events
        root 'home_page#index'
      end
    end


    Итоговый конфиг nginx:

    server {
      listen 80;
    
      client_max_body_size 4G;
      keepalive_timeout 10;
    
      error_page 500 502 504 /500.html;
      error_page 503 @503;
    
      server_name demo.server.ru;
    
      root /var/www/apps/demo/app_name/current/public;
    
      location /app_name{
        try_files $uri @app_name_production;
      }
    
      location @app_name_production {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
    
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    
        proxy_pass http://unicorn_app_name_production;
    
        access_log /var/log/nginx/app_name_production.access.log;
        error_log /var/log/nginx/app_name_production.error.log;
      }
    
      location ^~ /assets/ {
    
        gzip_static on;
        expires max;
        add_header Cache-Control public;
      }
    
      location = /50x.html {
        root html;
      }
    
      location = /404.html {
        root html;
      }
    
      location @503 {
        error_page 405 = /system/maintenance.html;
        if (-f $document_root/system/maintenance.html) {
          rewrite ^(.*)$ /system/maintenance.html break;
        }
        rewrite ^(.*)$ /503.html break;
      }
    
      if ($request_method !~ ^(GET|HEAD|PUT|PATCH|POST|DELETE|OPTIONS)$ ){
        return 405;
      }
    
      if (-f $document_root/system/maintenance.html) {
        return 503;
      }
    
    }
    Ответ написан
    Комментировать
  • Какие руби фреймворки cтоит попробовать?

    Fralunia
    @Fralunia
    Padrino - более сахарный Sinatra.
    Из вкусных плюшек:
    • Есть аналог быстрой генерации scaffold.
    • Есть авто-генерация админки из моделей.
    • Поддержка всех популярных ORM из коробки.
    • Можно маунтить отдельные приложения
    • Sass то же из коробки.
    • Есть несколько гемов для работы с assets.
    • Все гемы к Sinatra, подходят и к Padrino, т.к ядро там Sinatra, ну за редким исключением, где-то что-то надо будет подкрутить.

    Достаточно удобен для небольших сайтов. И создания api.
    Альтернатива, к более избыточному и тяжелому Rails.

    Собрать начальный проект очень просто:
    padrino g project sample_blog -t shoulda -e haml -c sass -s jquery -d activerecord -b

    подробности тут: https://www.padrinorb.com/guides/blog-tutorial
    Ответ написан
    Комментировать