Git Product home page Git Product logo

rg-portal's Introduction

wercker status

RG Portal

Development Environment Configuration

Requirements

  • Ruby 2.3.7
  • Bundler
  • Bower

Recommends

  • rbenv

Slack OAuth configuration file

  • Copy configuration sample from config/oauth.yml.sample
$ cp config/oauth.yml.sample config/oauth.yml
  • Get the oauth information from Slack RG AuthenticationのOAuth情報 (require slack authentication)

  • Do not create a new authentication yourself. The number of integrations has a limit.

Gem installation

$ bundle install --path=vendor/bundle

If you have a error like Failed to build gem native extension. during installation of libv8 or therubyracer, following configurations may help you.

$ bundle config build.libv8 --with-system-v8
$ bundle config build.therubyracer --with-v8-dir

If you failed install the libv8, See: http://qiita.com/yakiimo23/items/eaf48164821897e3dde9 or http://qiita.com/withelmo/items/723344ccec9b4450f360

Copy emoji files to public directory

$ rake emoji

JavaScript library installation

$ rake bower:install

Database creation

$ bundle exec rake db:migrate RAILS_ENV=development

It will create database file like db/development.sqlite3

Start sunspot solr on local

$ rake sunspot:solr:start

Generate test data

$ SLACK_USER_ID=<your slack user ID here> rake db:seed

You can run the seed task to generate test data. If you provide your slack ID via environment variable, you can login as one of the test users.

Move secrets files from production server

$ scp "rg-portal:/var/www/rg-portal/shared/config/*" cookbook/app/shared_files

rg-portal's People

Contributors

akkyie avatar demmys avatar itochan avatar kkoiro avatar koluke avatar miyukki avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rg-portal's Issues

pagesのタイトル方式を変更する

現状pagesはパスとタイトルを別に指定できる。

  • タイトル => Cについて
  • URL => A/B/C

しかし、タイトルにパスを含む方式にしたい。

  • タイトル => A/B/Cについて

SCSSのHound設定の見直し

  • 要素の並び順をABC順に制限しない
  • 変数名に_を許容する
  • 変数宣言以外での色の指定を許可する

他のページからリンクなどで遷移した先のページで絵文字の補完ボックスが表示されない

状況

  • 他のページからリンクで遷移したページで絵文字の補完ボックスが表示されなくなる
  • リロードすると表示される
  • URLで直接ページを叩いた場合は表示される
  • 絵文字名を途中まで入力してreturnを押すと補完されるため、補完機能自体は動いている
  • テキストエリアにフォーカスが入った時にbodyの下に作成されるul.dropdown-menuがちゃんと作成されていない

考察

  • Turbolinksが関係している感が強い

英語対応

i18n対応に加えて各ページでも日本語と英語両ページ用意できるようにする?

どのページからでも重要なページに飛べるような導線を作る

問題点

Wikiは各ページの自由度が高い点に大きなメリットがあるが、ハイパーリンクをたどっていく内に特定の情報へ飛ぶことが難しくなっていく。

解決策

特に中心的なコンテンツであるWIP/TERMに関する情報と卒論に関する情報については現在のトップページのようなWikiを統合した(パスの変わらない)レイアウト済みのページを用意し、ナビゲーションバーにそのページヘのリンクを付ける。

参考:
2015-09-03 17 57 37

Diffがおかしい

最新の履歴以外を見ようとするとエラーになってしまう

Timecopが実行環境のタイムゾーンに影響を受けてしまう

ref: #82 (comment)

問題点

アプリケーション内のTime.nowはconfig.time_zoneで設定されたものが使用されるが、結果を判断するRSpec内で呼ばれるTime.nowは実行環境のタイムゾーンを使用するため、ローカルPC(タイムゾーンはJST)ではPassするテストがwercker(タイムゾーンはUTC)で失敗する。

現状

現状では明示的に9時間を足すことでテストの失敗を隠蔽している。

CSSの表記を統一させる

  • クラス名がアンダーバーを含んでいるものがあるのでハイフン表記に統一させる
  • フォントサイズ表記を統一させる

Server ldap1.sfc.wide.ad.jp refused connection on port 389.

ローカルのdevelopment環境で起動してLdapの認証を試みたら以下のようにエラーになった。

Started PATCH "/settings/profile/ldap" for ::1 at 2015-09-13 12:03:30 +0900
Processing by SettingsController#update_ldap as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"1RISnYZzNfXQ6Rh2qWsfdaMewpeB7IYOCYZpLMG3TP9cP0wIKNzmxN4sqgXwh9v0nABlsGarN8YJmAEKGtklaQ==", "ldap"=>{"username"=>"demmy", "password"=>"[FILTERED]"}, "commit"=>"アカウント連携をする"}
  User Load (0.2ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", 3]]
Completed 500 Internal Server Error in 19ms

Net::LDAP::Error - Server ldap1.sfc.wide.ad.jp refused connection on port 389.:
  net-ldap (0.11) lib/net/ldap/connection.rb:17:in `rescue in initialize'
  net-ldap (0.11) lib/net/ldap/connection.rb:12:in `initialize'
  net-ldap (0.11) lib/net/ldap.rb:1223:in `new_connection'
  net-ldap (0.11) lib/net/ldap.rb:825:in `block in bind'
  net-ldap (0.11) lib/net/ldap/instrumentation.rb:19:in `instrument'
  net-ldap (0.11) lib/net/ldap.rb:819:in `bind'
  lib/supports/ldap_support.rb:10:in `ldap_bind'
  app/controllers/settings_controller.rb:10:in `update_ldap'
  actionpack (4.2.0) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
  actionpack (4.2.0) lib/abstract_controller/base.rb:198:in `process_action'
  actionpack (4.2.0) lib/action_controller/metal/rendering.rb:10:in `process_action'
  actionpack (4.2.0) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
  activesupport (4.2.0) lib/active_support/callbacks.rb:117:in `call'
  activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
  activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting'
  activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
  activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting'
  activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
  activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
  activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
  activesupport (4.2.0) lib/active_support/callbacks.rb:92:in `_run_callbacks'
  activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_process_action_callbacks'
  activesupport (4.2.0) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (4.2.0) lib/abstract_controller/callbacks.rb:19:in `process_action'
  actionpack (4.2.0) lib/action_controller/metal/rescue.rb:29:in `process_action'
  actionpack (4.2.0) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
  activesupport (4.2.0) lib/active_support/notifications.rb:164:in `block in instrument'
  activesupport (4.2.0) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (4.2.0) lib/active_support/notifications.rb:164:in `instrument'
  actionpack (4.2.0) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
  actionpack (4.2.0) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
  activerecord (4.2.0) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
  actionpack (4.2.0) lib/abstract_controller/base.rb:137:in `process'
  actionview (4.2.0) lib/action_view/rendering.rb:30:in `process'
  actionpack (4.2.0) lib/action_controller/metal.rb:195:in `dispatch'
  actionpack (4.2.0) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
  actionpack (4.2.0) lib/action_controller/metal.rb:236:in `block in action'
  actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
  actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:42:in `serve'
  actionpack (4.2.0) lib/action_dispatch/journey/router.rb:43:in `block in serve'
  actionpack (4.2.0) lib/action_dispatch/journey/router.rb:30:in `serve'
  actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:802:in `call'
  omniauth (1.2.2) lib/omniauth/strategy.rb:186:in `call!'
  omniauth (1.2.2) lib/omniauth/strategy.rb:164:in `call'
  omniauth (1.2.2) lib/omniauth/builder.rb:59:in `call'
  bullet (4.14.7) lib/bullet/rack.rb:10:in `call'
  rack (1.6.1) lib/rack/etag.rb:24:in `call'
  rack (1.6.1) lib/rack/conditionalget.rb:38:in `call'
  rack (1.6.1) lib/rack/head.rb:13:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/flash.rb:260:in `call'
  rack (1.6.1) lib/rack/session/abstract/id.rb:225:in `context'
  rack (1.6.1) lib/rack/session/abstract/id.rb:220:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/cookies.rb:560:in `call'
  activerecord (4.2.0) lib/active_record/query_cache.rb:36:in `call'
  activerecord (4.2.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:647:in `call'
  activerecord (4.2.0) lib/active_record/migration.rb:378:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
  activesupport (4.2.0) lib/active_support/callbacks.rb:88:in `_run_callbacks'
  activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_call_callbacks'
  activesupport (4.2.0) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (4.2.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/reloader.rb:73:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
  better_errors (2.1.1) lib/better_errors/middleware.rb:84:in `protected_app_call'
  better_errors (2.1.1) lib/better_errors/middleware.rb:79:in `better_errors_call'
  better_errors (2.1.1) lib/better_errors/middleware.rb:57:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
  web-console (2.1.2) lib/web_console/middleware.rb:37:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.2.0) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.2.0) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (4.2.0) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (4.2.0) lib/rails/rack/logger.rb:20:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
  rack (1.6.1) lib/rack/methodoverride.rb:22:in `call'
  rack (1.6.1) lib/rack/runtime.rb:18:in `call'
  activesupport (4.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
  rack (1.6.1) lib/rack/lock.rb:17:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/static.rb:113:in `call'
  rack (1.6.1) lib/rack/sendfile.rb:113:in `call'
  railties (4.2.0) lib/rails/engine.rb:518:in `call'
  railties (4.2.0) lib/rails/application.rb:164:in `call'
  rack (1.6.1) lib/rack/lock.rb:17:in `call'
  rack (1.6.1) lib/rack/content_length.rb:15:in `call'
  rack (1.6.1) lib/rack/handler/webrick.rb:89:in `service'
  /Users/demmys/.rbenv/versions/2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:138:in `service'
  /Users/demmys/.rbenv/versions/2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:94:in `run'
  /Users/demmys/.rbenv/versions/2.2.1/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'

roleを各機能ごとに作成して柔軟に切り替えられるように

目的

現状ではadmin, manager, generalの区分がUserにあるだけだが、細かい権限の付与設定を行いたくなると思うので、機能ごとに権限を分け、各Userに対してそれらをOn/Offできるようにする

実装方法

モデル

model Privilege(model: String, action: String, user: References)
Privilege.index [:user_id, :model, :action]
User has_many Privilege
  • あるmodelのあるactionに対するアクセス権限をPrivilegeで表現する

自分の権限の確認

SettingsController#profile で自分にどの権限が付与されているか確認できると良さそう

権限のOn/Off機能

  • 自分の権限の確認画面では各権限を他のユーザに付与するためのリンクがあり、たどってPrivilegesController#newに行くと、付与先のユーザを選択して権限の追加ができる
  • ユーザの指定はnicknameのselectでやれば、キーボード入力で目的のものに辿りつける?

出席管理のためのAPIを作る

Endpoint

POST /api/v1/attendances

Parameters

Name Description
access_token アクセストークン(コンソールから発行します)
student_id 学籍番号

Success Response

{
  "user": {
    "name": "Yusei Yamanaka",
    "nickname": "miyukki",
    "icon_url": "https://avatars.slack-edge.com/2015-01-08/3360245780_b34aaf467d966d97bd15_192.jpg"
  },
  "attendance_count": 1
}

Error Response (when access at out time of meeting)

{
  "error": "Not found meeting at current time."
}

Error Response (when set invalid student id)

{
  "error": "Not found user with student id."
}

Error Response (when attend duplicate with same meeting)

{
  "error": "Duplicated attendance."
}

SlackのOauth認証ができなくなっているので対処する

エラーログ

I, [2015-09-09T20:34:03.980930 #2405]  INFO -- omniauth: (slack) Request phase initiated.
I, [2015-09-09T20:34:11.155629 #2426]  INFO -- omniauth: (slack) Callback phase initiated.
E, [2015-09-09T20:34:11.193003 #2426] ERROR -- omniauth: (slack) Authentication failure! failed_to_connect: Faraday::ConnectionFailed, getaddrinfo: Temporary failure in name resolution

出席状況を確認できる様に

  • KGLが成績付けの参考にするために出席状況を確認できる様にしたい
  • 自分でも出席状況がわかると便利そう

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.