Giter VIP home page Giter VIP logo

whiteboard's Introduction

Whiteboard for CMU-SV

Welcome to the CMU-SV rails project for the Education group.

Documentation

See http://rubydoc.info/github/professor/whiteboard/frames or run "rake doc:app" or run "yard" to generate API documentation for your models, controllers, helpers, and libraries.

CMU-SV students (e.g. Metrics for Software Engineers (MfSE) students)

For teams doing project work for a course, please follow the directions provided in the course. We'll probably give you a repository to work from. Each new feature should be done in its own branch.

Getting involved

For individual maintainers, please fork the project on github, make your changes, and submit a pull request.

How do I submit a bug fix?

If you never used git, read Git Directions

This is the same process you would use in working with any open source project. If you want detailed directions with screen snapshots, see http://help.github.com/forking/ -- Go to github and login with your account. Then click on "fork" this project. This will create your own personal repository that you can play with. On your own desktop, you will want to do a git clone of your repository url. Your url will look something like this: [email protected]:USERNAME/cmusv.git -- add in a test case that exposes the bug, fix the bug, see that the test case passes. Great, you are almost done. Do a "git add ." "git commit" and a "git push" to get your change onto your personal repository on github. You then will want to get your change into my repository. Do a "git pull request" -- that will send your new code to me and we can have a dialog about the change.

Submitting code

The criteria for code being accepted is as follows:

1. there must be test cases for all code written, we already have enough code that was test by hand
   (please use rspec for new test cases)
2. the code should solve a need experienced by many of our users
3. the code must be relatively well written
4. if you are considering using new gems, run your ideas by the maintainers first

Running the tests

# run all the tests
bundle exec rake

# run just fast tests
rspec spec_no_rails/

# run jasmine tests
bundle exec rake jasmine
# or from a build process
bundle exec rake jasmine:ci

Conventions

Please use JQuery and JQuery UI. Whenever possible, AJAX should degrade gracefully. Ie, there should be a way to do the same action without AJAX.

Whenever referencing an image use an <%= image_tag %> ie <%= image_tag("/images/student_male.jpg", :size => "50x50", :border=>"0", :alt=>"These fields can be edited by a student role") %> On the production machine, images referenced with image_tag will be cached for faster page renderings. See http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html for more information.

When evaluating third party code, find ones that are well maintained. Check with Todd first before including it.

Things to note...

  • for a while the code separated a user into two tables, user and person. The original idea was that user would contain all the fields generated by restful-authentication and people would contain all the columns that were specific to this application. After some code was auto-generated, that idea was scrapped. All user data is in the user table. However, a few aspects of the system were never cleaned up. For example, effort_log has a column called "person_id" which uses the person controller but really ends up pointing to the user table.
  • is_student and is_staff is mutually exclusive for the effort logging.

##System configuration

  • Ruby 1.9.2-p180
  • see Gemfile for all other dependencies
  • If you want to use a new Gem, check in with Todd first

System Architecture

This application follows Ruby on Rails conventions whenever possible. In particular, newer modules have "thick" models and "thin" controllers.

The code runs on a virtualized hosting provider specializing in Ruby on Rails application deployment. (heroku.com) The software currently runs in one thin instance connected to a posgres database. Asychronous tasks are handled with delayed job. Rails' asset host feature is enabled which increases performance by having amazon s3 render most static files including images, css files, and javascript files.

There are a series of crontabs that execute daily or once a week. These call various rake tasks which in turn call various controllers or models. Lengthy crontab actions track progress through the activity, and are designed, if executed again to only process the remaining data. ie weekly effort log reminders. (Ironically, this feature has never been needed.)

Amazon S3

Newer parts of the system are beginning to use Amazon's S3 for file hosting. This is done with the aid of the PaperClip (file attachment) and aws-sdk gem.

Google Apps Integration

  • Mailing Lists - this application queries Google's provisitoning API to present to the user exactly who is on each mailing list.
  • When a new user is created, their google account can be auto created at the same time.
  • When people are added to a team, a mailing list for the team is created.

TWiki Integration

Some twiki information is better stored in a database. Also, we like to have key information stored only in one place. For this reason we found a way to do cross site scripting where information from one server is injected into the webpage on a different server. For more details, read this blog: http://toddsedano.squarespace.com/journal/2009/7/14/legitimate-cross-site-scripting-csx-with-ajax.html

  • User data shown on people's twiki pages comes from this application. On a user's twiki page (ie http://info.sv.cmu.edu/twiki/bin/view/Main/AndrewCarnegie) a bit of AJAX loads a rails page.
  • Team data shown on a coure's twiki page comes from this application.
  • When a new user is created, their twiki account can be auto created at the same time.

Delayed Job

To run delayed jobs from a development environment, type "rake jobs:work"

Style Guide

Tooltips

If you need a tooltip, then please use :title => "My tip here" on the input tag.

Layout

If you really need a hidden table to present tabular information:

<table class="layout_table">

If you want to show a table to the user:

<table class="cmu_table">

If you want to display a form, consider the formItem class (used in person profile)

        <div class="formItem">
          <%= f.label :masters_program, "Graduate program" %>
          <%= f.text_field :masters_program %>
        </div>

or a very simple layout (see attached image)

<table class="layout_table">
  <tr>
    <td><%= f.label :name %></td>
    <td><%= f.text_field :name, :size => "95" %></td>
  </tr>
  <tr><td></td></tr>
  <tr>
    <td></td>
    <td><%= f.submit button_name %></td>
  </tr>
</table>

Example use of layout_table

##Additional References To learn about unobtrusive javascript, check out:

Working with jquery

  • See if you have the right element selected by adding a .css("border", "2px red solid")

To learn more about delayed job, check out:

To learn about acts_as_versioned, check out:

To learn about Google Apps and Provisioning, check out:

To learn about the table sorting, check out:

To learn about the date picker code, check out:

  • JQuery UI's date picker

License

This code is released under the TBD license -- Copyright 2008 - 2012 Todd Sedano -- see "New Features" for a complete list of contributors

whiteboard's People

Contributors

ahsteele avatar alanhmak avatar albert-liu avatar aristide-n avatar baileyb avatar carinazheng avatar ccjensen avatar charuaggarwal avatar darrylmelander avatar dkharrat avatar hfung avatar himaniahuja avatar iron-man avatar isaksky avatar jjleng avatar kateliu avatar mhgbrown avatar mvrooman avatar oscaralvaro avatar owenchu avatar patrickbaumann avatar pfeffed avatar professor avatar rajdesai avatar rofy avatar seanxiaoxiao avatar sgriffinusa avatar sionc avatar vmarmol avatar zhipengli avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

whiteboard's Issues

Wymeditor is adding in a style tag to the html content for the pages

If you create bullet lists, or copy and paste an h3 then we end up with this junk in the raw html

style="background-image: url(http://rails.sv.cmu.edu/javascripts/wymeditor/iframe/default/lbl-h3.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); padding-top: 8px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-top: 10px; margin-right: 10px; margin-bottom: 10px; margin-left: 10px; background-position: 2px 2px; background-repeat: no-repeat no-repeat; "

style="background-image: url(http://rails.sv.cmu.edu/javascripts/wymeditor/iframe/default/lbl-p.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); padding-top: 8px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-top: 10px; margin-right: 10px; margin-bottom: 10px; margin-left: 10px; min-height: 1em; background-position: 2px 2px; background-repeat: no-repeat no-repeat; "

Remove odd output during "bundle exec rake"

Remove this #ActionController::TestResponse:0x00000100d114c8

from

................................................................................................................................*....................................................................................................#ActionController::TestResponse:0x00000100d114c8
*.
........................................................................................................................................................................................*****..................................................................................................................................................................................................................

New Issue - Editing effort log

When editing effort logs, the "course" drop down box shows only courses taken in the specific semester. The option to select any other course does not exist. So if I want to create a log on efforts for a Graduate Assistantship project, that is not possible this week (Week 39), although it was possible in the previous week.

Testing: every page should be rendered in the test suite

I think we worked on this in the Fall, but I don't remember the status. Ideally our test suite would render each page. I think we are doing this in the spec/requests directory, however we do have a spec/integration directory.

Page attachments controller

It looks like someone who isn't authenticated could try to submit to the page attachments controller. It will fail because the user isn't logged in, however, should we use the authentication method? Is there an ajax reason why we aren't doing this?

Deliverable -- attachments

Order the attachments to a deliverable ascending, so that the earliest submission is first, and the latest is last:

has_many :attachment_versions, :class_name => "DeliverableAttachment", :order => "submission_date ASC"

deliverables/show
In the view, do a reverse_each on the index

deliverables/_deliverables_ilisting
Was: <% latest_attachment = deliverable.attachment_versions.first %>
Now: <% latest_attachment = deliverable.attachment_versions.last %>

missing SE Practicum Team

Unless I'm doing something incorrect, my Barnes and Noble practicum team is not listed when I click on My Teams in LeftNav.

My courses

Create a link to "My Courses" so that people can see courses that they have taught, or were part of as students

Edit presentation

Once the faculty creates a presentation, you can't edit it. It would be nice to change the date, if it was entered incorrectly.

Effort Log

I found a bug in the effort logs. Here's what happened:

  1. I have not yet created an effort log for last week or this week
  2. I went ahead and created a new effort log for this week
  3. Then, I went ahead and created a new effort log for last week
  4. It is now showing a link that supposedly allows me to create a new
    effort log for this week, even though I have already done so (however,
    clicking on the link does display "There already is an effort log for
    the current week")

Please see the attached screenshot.

Found by Borys

Windows 7 and Chrome: login and redirect

Verify to see how repeatable this is. When a user clicks on a link to a page that requires login, after login, they are not redirected to the original link, they are sent to the home page.

Patrick Tague on windows 7 and chrome.
Gladys Mercier on Windows 7, Firefox.

rake task for searchify

Create a "script" that will iterate over all Page objects, and update their search information in Searchify (aka Index Tank).

Issue: sometimes we want to delete the Searchify index and re-create it.

Profile update and social handles

It is not immediate obvious how to get certain social handles.

Linked-ins took about 30 seconds to find

I have no idea how to find my google plus profile

We may need little question marks next to each of these to help out our users.

Rails 3.1 -- examine deprecation warning

  1. Try installing rails 3.1 in the Gemfile
  2. See if the server starts up
  3. Examine deprecation warnings in the rails server file and update code accordingly in it's own branch

/courses/semester/Spring2013

/courses/semester/Spring2013 -- doesn't work
/courses/semester/Spring2012 -- does work
/courses/semester/Fall2012 -- does work

Just a thought

http://rails.sv.cmu.edu? is a great idea!

How about adding an android/iPhone app for http://rails.sv.cmu.edu?

Problem: Student has to get a laptop/desktop or log onto the website to access information

Proposal: mobile phone app that alerts user on the go about any new information and allows him to interact with the info

Benefits: user will be alerted on phone of any new information posted, user will be able to interact with posted material on the go, much more functionalities can be thought of...

Pages: ability to revert to an older version of a page.

Either build the ability for the user to do it themselves or

construct an email to Todd on what the user wants done...

eg p = Page.find_by_url("foundations_task2")

p.version
=> 18

p.revert_to(15)
=> 15
p.version
=> 15
p.save
=> true

Or

Updating old data for faculty assignments to courses.

We either need to write a very short ruby script (using models and methods) or a sql update command to do the following.....

For each course that has teams with a primary_faculty_id and a secondary_faculty_id then add them to the faculty_assignments.

Context: we recently added the faculty_assignments table, but haven't updated it for the older data from existing courses.

[ERROR] omniauth_callbacks#failure (NoMethodError) "undefined method `new_session_path' for #<Users::OmniauthCallbacksCo...

There is a callback for failure that I haven't written. I'm wondering if we should add this method, and in particular, what is should do. Please skim any openid material to see if there are suggestions. We've been using the OmniAuth gem to help us with this. (We aren't on the latest.) I'm not sure how to test or reproduce. Maybe we redirect to the homepage with a message "Google could not authorize you from google because of "Invalid credentials." ?

A NoMethodError occurred in omniauth_callbacks#failure:

undefined method new_session_path' for #<Users::OmniauthCallbacksController:0x0000000882f2f0> .bundle/gems/ruby/1.9.1/gems/devise-1.4.7/app/controllers/devise/omniauth_callbacks_controller.rb:24:inafter_omniauth_failure_path_for'


Cmusv:

  • user_id:
  • user:
  • user's email:
  • robot:

Request:


Session:

  • session id: nil
  • data: {}

Environment:

  • GATEWAY_INTERFACE : CGI/1.2
  • HTTP_ACCEPT : text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
  • HTTP_ACCEPT_CHARSET : ISO-8859-1,utf-8;q=0.7,*;q=0.3
  • HTTP_ACCEPT_ENCODING : gzip,deflate,sdch
  • HTTP_ACCEPT_LANGUAGE : en-US,en;q=0.8
  • HTTP_CONNECTION : close
  • HTTP_COOKIE : __utma=115616320.887192055.1354741777.1354741777.1354741777.1; __utmb=115616320.1.10.1354741777; __utmc=115616320; __utmz=115616320.1354741777.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _CMUEducation_session=BAh7C0kiD3Nlc3Npb25faWQGOgZFRiIlYTU3MzliZDRiOWYzYjlkZDY2OTRhOTYwNWQwOWIzNDlJIhBfY3NyZl90b2tlbgY7AEZJIjFYbjZPUjYyUU1uVXVwRmxwTlJxTXpoTVNtNGI2T3prOVhBZVhLUnRSTDVVPQY7AEZJIhFxdWVyeV9wYXJhbXMGOwBGewBJIhRvbW5pYXV0aC5vcmlnaW4GOwBGIiJodHRwOi8vd2hpdGVib2FyZC5zdi5jbXUuZWR1L0kiPU9wZW5JRDo6Q29uc3VtZXI6OkRpc2NvdmVyZWRTZXJ2aWNlczo6T3BlbklEOjpDb25zdW1lcjo6BjsARm86KU9wZW5JRDo6Q29uc3VtZXI6OkRpc2NvdmVyZWRTZXJ2aWNlcwk6EkBzdGFydGluZ191cmxJIhF3ZXN0LmNtdS5lZHUGOwBGOg9AeWFkaXNfdXJsQBA6DkBzZXJ2aWNlc1sAOg1AY3VycmVudG86Ik9wZW5JRDo6T3BlbklEU2VydmljZUVuZHBvaW50DDoQQGNsYWltZWRfaWQwOhBAc2VydmVyX3VybEkiNmh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vYS93ZXN0LmNtdS5lZHUvbzgvdWQ%2FYmU9bzgGOwBUOg9AdHlwZV91cmlzWwpJIixodHRwOi8vc3BlY3Mub3BlbmlkLm5ldC9hdXRoLzIuMC9
    zZXJ2ZXIGOwBUSSIhaHR0cDovL29wZW5pZC5uZXQvc3J2L2F4LzEuMAY7AFRJIjlodHRwOi8vc3BlY3Mub3BlbmlkLm5ldC9leHRlbnNpb25zL3VpLzEuMC9tb2RlL3BvcHVwBjsAVEkiM2h0dHA6Ly9zcGVjcy5vcGVuaWQubmV0L2V4dGVuc2lvbnMvdWkvMS4wL2ljb24GOwBUSSIwaHR0cDovL3NwZWNzLm9wZW5pZC5uZXQvZXh0ZW5zaW9ucy9wYXBlLzEuMAY7AFQ6DkBsb2NhbF9pZDA6EkBjYW5vbmljYWxfaWQwOhBAdXNlZF95YWRpc1Q6GEBkaXNwbGF5X2lkZW50aWZpZXIwSSIuT3BlbklEOjpDb25zdW1lcjo6bGFzdF9yZXF1ZXN0ZWRfZW5kcG9pbnQGOwBGQBI%3D--579c161ed5f65d3dc179764cf6e9f3932cc1c12d
  • HTTP_HOST : whiteboard.sv.cmu.edu
  • HTTP_USER_AGENT : Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11
  • HTTP_VERSION : HTTP/1.1
  • HTTP_X_FORWARDED_FOR : 209.129.244.250
  • HTTP_X_HEROKU_DYNOS_IN_USE : 1
  • HTTP_X_HEROKU_QUEUE_DEPTH : 0
  • HTTP_X_HEROKU_QUEUE_WAIT_TIME : 0
  • HTTP_X_REAL_IP : 209.129.244.250
  • HTTP_X_REQUEST_START : 1354741841665
  • HTTP_X_VARNISH : 329153692
  • PATH_INFO : /users/auth/google_apps/callback
  • QUERY_STRING :
  • REMOTE_ADDR : 10.119.73.240
  • REQUEST_METHOD : POST
  • REQUEST_PATH : /users/auth/google_apps/callback
  • REQUEST_URI : /users/auth/google_apps/callback
  • SCRIPT_NAME :
  • SERVER_NAME : whiteboard.sv.cmu.edu
  • SERVER_PORT : 80
  • SERVER_PROTOCOL : HTTP/1.1
  • SERVER_SOFTWARE : thin 1.2.11 codename Bat-Shit Crazy
  • action_controller.instance : omniauth_callbacks#failure
  • action_dispatch.cookies : {"__utma"=>"115616320.887192055.1354741777.1354741777.1354741777.1", "__utmb"=>"115616320.1.10.1354741777", "__utmc"=>"115616320", "__utmz"=>"115616320.1354741777.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)", "_CMUEducation_session"=>"BAh7C0kiD3Nlc3Npb25faWQGOgZFRiIlYTU3MzliZDRiOWYzYjlkZDY2OTRhOTYwNWQwOWIzNDlJIhBfY3NyZl90b2tlbgY7AEZJIjFYbjZPUjYyUU1uVXVwRmxwTlJxTXpoTVNtNGI2T3prOVhBZVhLUnRSTDVVPQY7AEZJIhFxdWVyeV9wYXJhbXMGOwBGewBJIhRvbW5pYXV0aC5vcmlnaW4GOwBGIiJodHRwOi8vd2hpdGVib2FyZC5zdi5jbXUuZWR1L0kiPU9wZW5JRDo6Q29uc3VtZXI6OkRpc2NvdmVyZWRTZXJ2aWNlczo6T3BlbklEOjpDb25zdW1lcjo6BjsARm86KU9wZW5JRDo6Q29uc3VtZXI6OkRpc2NvdmVyZWRTZXJ2aWNlcwk6EkBzdGFydGluZ191cmxJIhF3ZXN0LmNtdS5lZHUGOwBGOg9AeWFkaXNfdXJsQBA6DkBzZXJ2aWNlc1sAOg1AY3VycmVudG86Ik9wZW5JRDo6T3BlbklEU2VydmljZUVuZHBvaW50DDoQQGNsYWltZWRfaWQwOhBAc2VydmVyX3VybEkiNmh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vYS93ZXN0LmNtdS5lZHUvbzgvdWQ/YmU9bzgGOwBUOg9AdHlwZV91cmlzWwpJIixodHRwOi8vc3BlY3Mub3Bl
    bmlkLm5ldC9hdXRoLzIuMC9zZXJ2ZXIGOwBUSSIhaHR0cDovL29wZW5pZC5uZXQvc3J2L2F4LzEuMAY7AFRJIjlodHRwOi8vc3BlY3Mub3BlbmlkLm5ldC9leHRlbnNpb25zL3VpLzEuMC9tb2RlL3BvcHVwBjsAVEkiM2h0dHA6Ly9zcGVjcy5vcGVuaWQubmV0L2V4dGVuc2lvbnMvdWkvMS4wL2ljb24GOwBUSSIwaHR0cDovL3NwZWNzLm9wZW5pZC5uZXQvZXh0ZW5zaW9ucy9wYXBlLzEuMAY7AFQ6DkBsb2NhbF9pZDA6EkBjYW5vbmljYWxfaWQwOhBAdXNlZF95YWRpc1Q6GEBkaXNwbGF5X2lkZW50aWZpZXIwSSIuT3BlbklEOjpDb25zdW1lcjo6bGFzdF9yZXF1ZXN0ZWRfZW5kcG9pbnQGOwBGQBI=--579c161ed5f65d3dc179764cf6e9f3932cc1c12d"}
  • action_dispatch.parameter_filter : [:password, /RAW_POST_DATA/]
  • action_dispatch.remote_ip : 209.129.244.250
  • action_dispatch.request.flash_hash : {:alert=>"Could not authorize you from google because "Invalid credentials"."}
  • action_dispatch.request.formats : [text/html]
  • action_dispatch.request.parameters : {}
  • action_dispatch.request.path_parameters : {}
  • action_dispatch.request.query_parameters : {}
  • action_dispatch.request.request_parameters : {}
  • action_dispatch.request.unsigned_session_cookie: {"session_id"=>"a5739bd4b9f3b9dd6694a9605d09b349", "_csrf_token"=>"Xn6OR62QMnUupFlpNRqMzhMSm4b6Ozk9XAeXKRtRL5U=", "query_params"=>{}, "omniauth.origin"=>"http://whiteboard.sv.cmu.edu/", "OpenID::Consumer::DiscoveredServices::OpenID::Consumer::"=>#<OpenID::Consumer::DiscoveredServices:0x00000008a482d0 @starting_url="west.cmu.edu", @yadis_url="west.cmu.edu", @services=[], @current=<OpenID::OpenIDServiceEndpoint server_url=https://www.google.com/a/west.cmu.edu/o8/ud?be=o8 claimed_id= local_id= canonical_id= used_yadis=true>>, "OpenID::Consumer::last_requested_endpoint"=><OpenID::OpenIDServiceEndpoint server_url=https://www.google.com/a/west.cmu.edu/o8/ud?be=o8 claimed_id= local_id= canonical_id= used_yadis=true>}
  • action_dispatch.secret_token : 15a068ffeadeebfd1b1837ec0d699670873cbc40316ac3f3e1cc609517b1a0a0b061d0a3df8ababd5b790125cac09aeee64cf5720e5b56b185068715f24b2367
  • action_dispatch.show_exceptions : true
  • async.callback : #<Method: Thin::Connection#post_process>
  • async.close : #EventMachine::DefaultDeferrable:0x00000008a55d90
  • devise.mapping : #Devise::Mapping:0x000000070115b0
  • exception_notifier.exception_data : {:current_user=>nil}
  • exception_notifier.options : {:sender_address=>""Exception" [email protected]", :exception_recipients=>["[email protected],", "[email protected]"], :email_prefix=>"[ERROR] ", :sections=>["cmusv", "request", "session", "environment", "backtrace"], :ignore_exceptions=>[ActiveRecord::RecordNotFound, AbstractController::ActionNotFound, ActionController::RoutingError]}
  • omniauth.error :
  • omniauth.error.strategy : #OmniAuth::Strategies::GoogleApps:0x00000008833698
  • omniauth.error.type : invalid_credentials
  • omniauth.origin : http://whiteboard.sv.cmu.edu/
  • omniauth.strategy : #OmniAuth::Strategies::GoogleApps:0x00000008833698
  • rack.errors : #IO:0x00000002203918
  • rack.input : #StringIO:0x00000008252a30
  • rack.multiprocess : false
  • rack.multithread : false
  • rack.request.cookie_hash : {"__utma"=>"115616320.887192055.1354741777.1354741777.1354741777.1", "__utmb"=>"115616320.1.10.1354741777", "__utmc"=>"115616320", "__utmz"=>"115616320.1354741777.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)", "_CMUEducation_session"=>"BAh7C0kiD3Nlc3Npb25faWQGOgZFRiIlYTU3MzliZDRiOWYzYjlkZDY2OTRhOTYwNWQwOWIzNDlJIhBfY3NyZl90b2tlbgY7AEZJIjFYbjZPUjYyUU1uVXVwRmxwTlJxTXpoTVNtNGI2T3prOVhBZVhLUnRSTDVVPQY7AEZJIhFxdWVyeV9wYXJhbXMGOwBGewBJIhRvbW5pYXV0aC5vcmlnaW4GOwBGIiJodHRwOi8vd2hpdGVib2FyZC5zdi5jbXUuZWR1L0kiPU9wZW5JRDo6Q29uc3VtZXI6OkRpc2NvdmVyZWRTZXJ2aWNlczo6T3BlbklEOjpDb25zdW1lcjo6BjsARm86KU9wZW5JRDo6Q29uc3VtZXI6OkRpc2NvdmVyZWRTZXJ2aWNlcwk6EkBzdGFydGluZ191cmxJIhF3ZXN0LmNtdS5lZHUGOwBGOg9AeWFkaXNfdXJsQBA6DkBzZXJ2aWNlc1sAOg1AY3VycmVudG86Ik9wZW5JRDo6T3BlbklEU2VydmljZUVuZHBvaW50DDoQQGNsYWltZWRfaWQwOhBAc2VydmVyX3VybEkiNmh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vYS93ZXN0LmNtdS5lZHUvbzgvdWQ/YmU9bzgGOwBUOg9AdHlwZV91cmlzWwpJIixodHRwOi8vc3BlY3Mub3Bl
    bmlkLm5ldC9hdXRoLzIuMC9zZXJ2ZXIGOwBUSSIhaHR0cDovL29wZW5pZC5uZXQvc3J2L2F4LzEuMAY7AFRJIjlodHRwOi8vc3BlY3Mub3BlbmlkLm5ldC9leHRlbnNpb25zL3VpLzEuMC9tb2RlL3BvcHVwBjsAVEkiM2h0dHA6Ly9zcGVjcy5vcGVuaWQubmV0L2V4dGVuc2lvbnMvdWkvMS4wL2ljb24GOwBUSSIwaHR0cDovL3NwZWNzLm9wZW5pZC5uZXQvZXh0ZW5zaW9ucy9wYXBlLzEuMAY7AFQ6DkBsb2NhbF9pZDA6EkBjYW5vbmljYWxfaWQwOhBAdXNlZF95YWRpc1Q6GEBkaXNwbGF5X2lkZW50aWZpZXIwSSIuT3BlbklEOjpDb25zdW1lcjo6bGFzdF9yZXF1ZXN0ZWRfZW5kcG9pbnQGOwBGQBI=--579c161ed5f65d3dc179764cf6e9f3932cc1c12d"}
  • rack.request.cookie_string : __utma=115616320.887192055.1354741777.1354741777.1354741777.1; __utmb=115616320.1.10.1354741777; __utmc=115616320; __utmz=115616320.1354741777.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _CMUEducation_session=BAh7C0kiD3Nlc3Npb25faWQGOgZFRiIlYTU3MzliZDRiOWYzYjlkZDY2OTRhOTYwNWQwOWIzNDlJIhBfY3NyZl90b2tlbgY7AEZJIjFYbjZPUjYyUU1uVXVwRmxwTlJxTXpoTVNtNGI2T3prOVhBZVhLUnRSTDVVPQY7AEZJIhFxdWVyeV9wYXJhbXMGOwBGewBJIhRvbW5pYXV0aC5vcmlnaW4GOwBGIiJodHRwOi8vd2hpdGVib2FyZC5zdi5jbXUuZWR1L0kiPU9wZW5JRDo6Q29uc3VtZXI6OkRpc2NvdmVyZWRTZXJ2aWNlczo6T3BlbklEOjpDb25zdW1lcjo6BjsARm86KU9wZW5JRDo6Q29uc3VtZXI6OkRpc2NvdmVyZWRTZXJ2aWNlcwk6EkBzdGFydGluZ191cmxJIhF3ZXN0LmNtdS5lZHUGOwBGOg9AeWFkaXNfdXJsQBA6DkBzZXJ2aWNlc1sAOg1AY3VycmVudG86Ik9wZW5JRDo6T3BlbklEU2VydmljZUVuZHBvaW50DDoQQGNsYWltZWRfaWQwOhBAc2VydmVyX3VybEkiNmh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vYS93ZXN0LmNtdS5lZHUvbzgvdWQ%2FYmU9bzgGOwBUOg9AdHlwZV91cmlzWwpJIixodHRwOi8vc3BlY3Mub3BlbmlkLm5ldC9hdXRoLzIuMC9
    zZXJ2ZXIGOwBUSSIhaHR0cDovL29wZW5pZC5uZXQvc3J2L2F4LzEuMAY7AFRJIjlodHRwOi8vc3BlY3Mub3BlbmlkLm5ldC9leHRlbnNpb25zL3VpLzEuMC9tb2RlL3BvcHVwBjsAVEkiM2h0dHA6Ly9zcGVjcy5vcGVuaWQubmV0L2V4dGVuc2lvbnMvdWkvMS4wL2ljb24GOwBUSSIwaHR0cDovL3NwZWNzLm9wZW5pZC5uZXQvZXh0ZW5zaW9ucy9wYXBlLzEuMAY7AFQ6DkBsb2NhbF9pZDA6EkBjYW5vbmljYWxfaWQwOhBAdXNlZF95YWRpc1Q6GEBkaXNwbGF5X2lkZW50aWZpZXIwSSIuT3BlbklEOjpDb25zdW1lcjo6bGFzdF9yZXF1ZXN0ZWRfZW5kcG9pbnQGOwBGQBI%3D--579c161ed5f65d3dc179764cf6e9f3932cc1c12d
  • rack.request.form_hash : {}
  • rack.request.form_input : #StringIO:0x00000008252a30
  • rack.request.form_vars :
  • rack.request.query_hash : {}
  • rack.request.query_string :
  • rack.run_once : false
  • rack.session : {}
  • rack.session.options : {:path=>"/", :domain=>nil, :expire_after=>nil, :secure=>false, :httponly=>true, :id=>nil}
  • rack.url_scheme : http
  • rack.version : [1, 0]
  • warden : Warden::Proxy:72486860 @config={:default_scope=>:user, :scope_defaults=>{}, :default_strategies=>{:user=>[:rememberable]}, :intercept_401=>false, :failure_app=>Devise::FailureApp}
  • Process: 2
  • Server : b555f72c-cbd3-4e65-ae95-7fa5fb8a3d6e

Backtrace:

.bundle/gems/ruby/1.9.1/gems/devise-1.4.7/app/controllers/devise/omniauth_callbacks_controller.rb:24:in after_omniauth_failure_path_for' .bundle/gems/ruby/1.9.1/gems/devise-1.4.7/app/controllers/devise/omniauth_callbacks_controller.rb:6:infailure'
.bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_controller/metal/implicit_render.rb:4:in send_action' .bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/abstract_controller/base.rb:150:inprocess_action'
.bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_controller/metal/rendering.rb:11:in process_action' .bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/abstract_controller/callbacks.rb:18:inblock in process_action'
.bundle/gems/ruby/1.9.1/gems/activesupport-3.0.9/lib/active_support/callbacks.rb:446:in _run__4375339293636995333__process_action__950452360769351146__callbacks' .bundle/gems/ruby/1.9.1/gems/activesupport-3.0.9/lib/active_support/callbacks.rb:410:in_run_process_action_callbacks'
.bundle/gems/ruby/1.9.1/gems/activesupport-3.0.9/lib/active_support/callbacks.rb:94:in run_callbacks' .bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/abstract_controller/callbacks.rb:17:inprocess_action'
.bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_controller/metal/instrumentation.rb:30:in block in process_action' .bundle/gems/ruby/1.9.1/gems/activesupport-3.0.9/lib/active_support/notifications.rb:52:inblock in instrument'
.bundle/gems/ruby/1.9.1/gems/activesupport-3.0.9/lib/active_support/notifications/instrumenter.rb:21:in instrument' .bundle/gems/ruby/1.9.1/gems/activesupport-3.0.9/lib/active_support/notifications.rb:52:ininstrument'
.bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_controller/metal/instrumentation.rb:29:in process_action' .bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_controller/metal/rescue.rb:17:inprocess_action'
.bundle/gems/ruby/1.9.1/gems/newrelic_rpm-3.1.2/lib/new_relic/agent/instrumentation/rails3/action_controller.rb:34:in block in process_action' .bundle/gems/ruby/1.9.1/gems/newrelic_rpm-3.1.2/lib/new_relic/agent/instrumentation/controller_instrumentation.rb:253:inblock in perform_action_with_newrelic_trace'
.bundle/gems/ruby/1.9.1/gems/newrelic_rpm-3.1.2/lib/new_relic/agent/method_tracer.rb:242:in trace_execution_scoped' .bundle/gems/ruby/1.9.1/gems/newrelic_rpm-3.1.2/lib/new_relic/agent/instrumentation/controller_instrumentation.rb:248:inperform_action_with_newrelic_trace'
.bundle/gems/ruby/1.9.1/gems/newrelic_rpm-3.1.2/lib/new_relic/agent/instrumentation/rails3/action_controller.rb:33:in process_action' .bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/abstract_controller/base.rb:119:inprocess'
.bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/abstract_controller/rendering.rb:41:in process' .bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_controller/metal.rb:138:indispatch'
.bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_controller/metal/rack_delegation.rb:14:in dispatch' .bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_controller/metal.rb:178:inblock in action'
.bundle/gems/ruby/1.9.1/gems/devise-1.4.7/lib/devise/omniauth.rb:19:in call' .bundle/gems/ruby/1.9.1/gems/devise-1.4.7/lib/devise/omniauth.rb:19:inblock in <top (required)>'
.bundle/gems/ruby/1.9.1/gems/oa-core-0.3.0.rc3/lib/omniauth/strategy.rb:227:in call' .bundle/gems/ruby/1.9.1/gems/oa-core-0.3.0.rc3/lib/omniauth/strategy.rb:227:infail!'
.bundle/gems/ruby/1.9.1/gems/oa-openid-0.3.0.rc3/lib/omniauth/strategies/open_id.rb:93:in callback_phase' .bundle/gems/ruby/1.9.1/gems/oa-core-0.3.0.rc3/lib/omniauth/strategy.rb:68:incallback_call'
.bundle/gems/ruby/1.9.1/gems/oa-core-0.3.0.rc3/lib/omniauth/strategy.rb:42:in call!' .bundle/gems/ruby/1.9.1/gems/oa-core-0.3.0.rc3/lib/omniauth/strategy.rb:30:incall'
.bundle/gems/ruby/1.9.1/gems/rack-openid-1.3.1/lib/rack/openid.rb:98:in call' .bundle/gems/ruby/1.9.1/gems/newrelic_rpm-3.1.2/lib/new_relic/rack/browser_monitoring.rb:18:incall'
.bundle/gems/ruby/1.9.1/gems/rack-google_analytics-1.0.2/lib/rack/google_analytics.rb:5:in call' .bundle/gems/ruby/1.9.1/gems/exception_notification-2.5.2/lib/exception_notifier.rb:25:incall'
.bundle/gems/ruby/1.9.1/gems/warden-1.0.6/lib/warden/manager.rb:35:in block in call' .bundle/gems/ruby/1.9.1/gems/warden-1.0.6/lib/warden/manager.rb:34:incatch'
.bundle/gems/ruby/1.9.1/gems/warden-1.0.6/lib/warden/manager.rb:34:in call' .bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_dispatch/middleware/best_standards_support.rb:17:incall'
.bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_dispatch/middleware/head.rb:14:in call' .bundle/gems/ruby/1.9.1/gems/rack-1.2.4/lib/rack/methodoverride.rb:24:incall'
.bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_dispatch/middleware/params_parser.rb:21:in call' .bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_dispatch/middleware/flash.rb:182:incall'
.bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_dispatch/middleware/session/abstract_store.rb:149:in call' .bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_dispatch/middleware/cookies.rb:302:incall'
.bundle/gems/ruby/1.9.1/gems/activerecord-3.0.9/lib/active_record/query_cache.rb:32:in block in call' .bundle/gems/ruby/1.9.1/gems/activerecord-3.0.9/lib/active_record/connection_adapters/abstract/query_cache.rb:28:incache'
.bundle/gems/ruby/1.9.1/gems/activerecord-3.0.9/lib/active_record/query_cache.rb:12:in cache' .bundle/gems/ruby/1.9.1/gems/activerecord-3.0.9/lib/active_record/query_cache.rb:31:incall'
.bundle/gems/ruby/1.9.1/gems/activerecord-3.0.9/lib/active_record/connection_adapters/abstract/connection_pool.rb:354:in call' .bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_dispatch/middleware/callbacks.rb:46:inblock in call'
.bundle/gems/ruby/1.9.1/gems/activesupport-3.0.9/lib/active_support/callbacks.rb:416:in _run_call_callbacks' .bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_dispatch/middleware/callbacks.rb:44:incall'
.bundle/gems/ruby/1.9.1/gems/rack-1.2.4/lib/rack/sendfile.rb:106:in call' .bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_dispatch/middleware/remote_ip.rb:48:incall'
.bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_dispatch/middleware/show_exceptions.rb:47:in call' .bundle/gems/ruby/1.9.1/gems/railties-3.0.9/lib/rails/rack/logger.rb:13:incall'
.bundle/gems/ruby/1.9.1/gems/rack-1.2.4/lib/rack/runtime.rb:17:in call' .bundle/gems/ruby/1.9.1/gems/rack-1.2.4/lib/rack/lock.rb:11:inblock in call'
internal:prelude:10:in synchronize' .bundle/gems/ruby/1.9.1/gems/rack-1.2.4/lib/rack/lock.rb:11:incall'
.bundle/gems/ruby/1.9.1/gems/actionpack-3.0.9/lib/action_dispatch/middleware/static.rb:30:in call' .bundle/gems/ruby/1.9.1/gems/railties-3.0.9/lib/rails/application.rb:168:incall'
.bundle/gems/ruby/1.9.1/gems/railties-3.0.9/lib/rails/application.rb:77:in method_missing' /home/heroku_rack/lib/static_assets.rb:9:incall'
/home/heroku_rack/lib/last_access.rb:15:in call' .bundle/gems/ruby/1.9.1/gems/rack-1.2.4/lib/rack/urlmap.rb:47:inblock in call'
.bundle/gems/ruby/1.9.1/gems/rack-1.2.4/lib/rack/urlmap.rb:41:in each' .bundle/gems/ruby/1.9.1/gems/rack-1.2.4/lib/rack/urlmap.rb:41:incall'
/home/heroku_rack/lib/date_header.rb:14:in call' .bundle/gems/ruby/1.9.1/gems/rack-1.2.4/lib/rack/builder.rb:77:incall'
.bundle/gems/ruby/1.9.1/gems/thin-1.2.11/lib/thin/connection.rb:84:in block in pre_process' .bundle/gems/ruby/1.9.1/gems/thin-1.2.11/lib/thin/connection.rb:82:incatch'
.bundle/gems/ruby/1.9.1/gems/thin-1.2.11/lib/thin/connection.rb:82:in pre_process' .bundle/gems/ruby/1.9.1/gems/thin-1.2.11/lib/thin/connection.rb:57:inprocess'
.bundle/gems/ruby/1.9.1/gems/thin-1.2.11/lib/thin/connection.rb:42:in receive_data' .bundle/gems/ruby/1.9.1/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:inrun_machine'
.bundle/gems/ruby/1.9.1/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in run' .bundle/gems/ruby/1.9.1/gems/thin-1.2.11/lib/thin/backends/base.rb:61:instart'
.bundle/gems/ruby/1.9.1/gems/thin-1.2.11/lib/thin/server.rb:159:in start' .bundle/gems/ruby/1.9.1/gems/thin-1.2.11/lib/thin/controllers/controller.rb:86:instart'
.bundle/gems/ruby/1.9.1/gems/thin-1.2.11/lib/thin/runner.rb:185:in run_command' .bundle/gems/ruby/1.9.1/gems/thin-1.2.11/lib/thin/runner.rb:151:inrun!'
.bundle/gems/ruby/1.9.1/gems/thin-1.2.11/bin/thin:6:in <top (required)>' /usr/ruby1.9.2/bin/thin:19:inload'
/usr/ruby1.9.2/bin/thin:19:in `

'

Problem operating Effort Log

Hey,

I get this warning each time I submit my Effort Log at http://rails.sv.cmu.edu/effort_logs:

You are not on a team in the following course(s)
Introduction to Software Engineering

Please direct where I should log this query as the "Add a Suggestion" page draws me here.

Thanks
Apoorva

Need better feedback on the confirmation of effort page

When confirming the levels of effort, the only change to the page is a small line of text in green at the top. I recommend a more obviously distinct page from the prior page asking for confirmation, so that one immediately knows that the button-press was accepted. The first time, I thought it hadn't worked and kept pressing the button.

New Page

When typing in a title, it auto populates the url (unless the url is already there)

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.