Giter VIP home page Giter VIP logo

rollcall-attendance's Introduction

Roll Call Attendance Tracker

Dependencies

  • Ruby 2.4
  • PostgreSQL
  • Redis

Development setup

Roll Call can be run locally on your machine or with Docker. These instructions assume you are using Docker.

1. Setup Canvas:

You need to have a local Canvas install running, and it needs to be in docker (otherwise having rollcall post back to it will not work, it needs a domain both it and the browser can reach).

Follow our general Docker setup here: https://github.com/instructure/canvas-lms/blob/stable/doc/docker/getting_docker.md

And our Canvas in Docker setup here: https://github.com/instructure/canvas-lms/blob/stable/doc/docker/developing_with_docker.md

Once you have a dockerized Canvas up and running, you need to add a developer key to Canvas for rollcall to connect with. As an admin account, go to http://canvas.docker/accounts/<id>/developer_keys, create an API key with a tool_id of "rollcall" and a redirect url of http://rollcall.docker/canvas_oauth. Ensure the key state is ON. Once it's been created, get the ID number (an integer) from the index page along with the token and add them as CANVAS_KEY and CANVAS_SECRET, respectively, in .env.

2. Configure the LTI

The LTI will run in development without further configuration; however, some things like mail delivery (for attendance report exports) may not work. You can further configure the LTI by specifying environment variables in .env. Refer to env.sample for inspiration.

Some aspects (such as database and mail) can also be configured in the traditional Rails way of YAML files in the config directory. Refer to config/database.yml.sample and config/mail.yaml.sample for examples.

Note that in production you will want to make sure to configure the SMTP outgoing address parameter to an email address on your own domain; otherwise, your reports will be sent from "Roll Call <[email protected]>", which is most certainly not what you want.

3. Configure your docker environment for SSL

Do to recent changes in browsers, the session cookies for rollcall are required to have SaveSite=None and secure. Due to secure local development is easier if you configure your dockerized canvas and rollcall to use SSL. If you are using dinghy for OS X based development. You can find instructions on how to create self signed certificates at https://github.com/codekitchen/dinghy-http-proxy/blob/master/README.md#ssl-support

The default docker-compose.override.yml file will share your ~/.dinghy/cert directory into the docker containers and add the certifications in that directory as trusted certificates to the container.

4. Docker build + Database migrations:

NOTE: By default this setup uses postgres. To use mysql instead, export:

COMPOSE_FILE=docker-compose.yml:docker-compose.override.yml:docker-compose.mysql.yml

Now you should be able to build your containers with:

docker compose build

You can get your database prepped for development with the normal rake tasks, you just have to run them in the container:

docker compose run --rm web bundle install
docker compose run --rm web bundle exec rake db:create
docker compose run --rm web bundle exec rake db:migrate

5. Run it!

You should be able to start everything with:

docker compose up

This will start up 5 containers: a web process to hit with your browser, a worker process to consume jobs, a postgres data store, a redis cache, and a minio server so you don't need a real AWS S3 bucket. When they're running, you can visit your app in the browser by going to:

http://rollcall.docker

6. Add Roll Call to Canvas:

In Canvas, go to Account >> Settings >> Apps, click "Add App", and use the following settings:

Configuration Type: By URL
Name: Roll Call
Consumer Key: 12345
Shared Secret: secret
Config URL: http://rollcall.docker/configure.xml

You can change the consumer key and shared secret by overriding LTI_KEY and LTI_SECRET in docker-compose.yml.

You're all set!

Running Tests (With Docker!)

Rollcall has three test suites (RSpec, Cucumber, & Jasmine).

Make sure your test database is in the right state before trying to run them:

docker compose run --rm web bundle exec rake db:test:prepare

Now you can run your rspec tests in the web container like this:

docker compose run --rm web bundle exec rake spec

You can watch your jasmine specs run by starting your docker compose config, and then navigating to the ./jasmine directory:

docker compose up

And then visit in your browser: http://rollcall.docker/jasmine

but that kind of sucks for rerunning. Run your javascript tests from the command line like this:

docker compose run --rm web bundle exec rake jasmine:ci

Finally, you can run your cucumber tests, but it's kind of hacky. For linux (which the container is) you need to wrap a cucumber run in "xvfb-run" for capybara-webkit to work correctly, but something in that process is making output redirection not work right, so you won't see the output if you just run "docker compose run --rm web xvfb-run bundle exec cucumber".

We've found you can get around this by telling docker compose you want it to run a bash script, and having the bash script kick off the xvfb-run command, so run this to see your cuke output:

docker compose run --rm web bash bin/cucumber

Running the Whole Suite

If you want to run the whole suite of tests, like a CI would, just run:

./build.sh

and watch the output fly by. It builds the docker image and runs in sequence the rspec tests, the jasmine tests, and the cukes. Failures in any should exit the script with a non-zero exit code.

Avatars

You can enable or disable the avatars service in Canvas via the Rails console in canvas-lms:

# from the canvas-lms directory
docker compose run --rm web bundle exec rails c

Account.find_each { |a| a.enable_service(:avatars) ; a.save }
- or -
Account.find_each { |a| a.disable_service(:avatars) ; a.save }

rollcall-attendance's People

Contributors

barreirainstructure avatar dependabot-preview[bot] avatar djbender avatar grahamb avatar joaoreispandata avatar juan-leyva avatar kaibjorkman avatar ktgeek avatar luishilariomtz avatar muriloroque avatar reinaldoacosta avatar richardba avatar simonista avatar spencerolson avatar tierra 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rollcall-attendance's Issues

Unable to Start RollCall Application

I have used the instructions in this repo but the application fails to run with the following message:

Error: The application encountered the following error: Warning: LTI key and secret not configured for production). (RuntimeError)

I have the LTI key and secret placed in the .env

Can anyone point in the right direction please? I do not know where those vars must be set.

Rollcall attendance authorizes Error: invalid code

I have installed rollcall attendance successfully in production mode. However when I clicked to link "attendance" on canvas lms main menu, it showed an authorize screen "rollcall is requesting access to your account.". After clicking to authorize button an error code shown as below:

Error: invalid code - 16b8e0758a535b7feede05ed41ebc76abee724cd7633e4872272d068c781291d59c94b9b63f7518c29b4acb07abdeca24015d120a0583b056bf9c2c4598149c3

What is my error? How can I fix it?
Thank you.

Rollcall attendance can not authorize from my course

I set up a canvas and roll call attendance on my laptop. I have generated CANVAS_KEY and CANVAS_SECRET. But, I can not authorize the roll call attendance in my courses. Please give me some advice for tracing this case. Many thanks.
Case 1: I got an error: Canvas doesn't open any link for me to authorize the course and it shows an error below:
"The OAuth signature was invalid. Please be sure you are launching this tool from the link provided in Canvas."
Case 2: The canvas has opened a link for me to authorize. After that, It shows an invalid code: c70288c616182151f035aaff6730370848ae8ecd20c2d3376cabfd69a329199587a3e26117df1244cb0dc3d6ca32a36ae885ddfb35046aa76173363e78
Screenshot from 2022-06-16 10-00-29
Screenshot from 2022-06-16 10-01-00
Screenshot from 2022-06-16 10-38-13

Missing Template error after running successfully

Steps to reproduce

  1. Follow install steps using docker container development ruby environment
  2. See successful roll call attendance app in canvas
  3. wait ~15 hours
  4. Roll call attendance app now errors

Error:

"SectionsController#course is missing a template for request formats: text/html"
image

Docker container error log

web_1    | {"ts":"2023-01-10T15:20:38.777","unix_ts":1673364038.7777214,"severity":"DEBUG","pid":147,"message":"   (0.4ms)  BEGIN"}
web_1    | {"ts":"2023-01-10T15:20:38.782","unix_ts":1673364038.7825606,"severity":"DEBUG","pid":147,"message":"  LtiProvider::Launch Create (2.0ms)  INSERT INTO \"lti_provider_launches\" (\"canvas_url\", \"nonce\", \"provider_params\", \"created_at\", \"updated_at\") VALUES ($1, $2, $3, $4, $5) RETURNING \"id\"  [[\"canvas_url\", \"http://canvas-dev.example.org\"], [\"nonce\", \"8LqH29odkR4****************iz9Me3s\"], [\"provider_params\", \"---\\ncontext_id: 4dde05e8c***************548820eee93a3\\ncontext_label: Testing\\ncontext_title: Testing Course\\nlaunch_presentation_document_target: iframe\\nlaunch_presentation_height: '400'\\nlaunch_presentation_locale: en\\nlaunch_presentation_return_url: http://canvas-dev.example.org/courses/1/external_content/success/external_tool_redirect\\nlaunch_presentation_width: '800'\\nlis_person_contact_email_primary: [email protected]\\nlis_person_name_family: ''\\nlis_person_name_full: [email protected]\\nlis_person_name_given: [email protected]\\nlti_message_type: basic-lti-launch-request\\nlti_version: LTI-1p0\\noauth_callback: about:blank\\noauth_consumer_key: Tk*******************C\\noauth_nonce: 8LqH29odkR4****************iz9Me3s\\noauth_signature: frYDclV3dynlr+WMu6TEwp8XHo4=\\noauth_signature_method: HMAC-SHA1\\noauth_timestamp: '1673364035'\\noauth_version: '1.0'\\nresource_link_id: 4dde05e8c***************548820eee93a3\\nresource_link_title: Roll Call\\nroles: Instructor,urn:lti:instrole:ims/lis/Administrator,urn:lti:sysrole:ims/lis/SysAdmin\\ntool_consumer_info_product_family_code: canvas\\ntool_consumer_info_version: cloud\\ntool_consumer_instance_contact_email: [email protected]\\ntool_consumer_instance_guid: t5yCo*****************kk:canvas-lms\\ntool_consumer_instance_name: Stiegler EdTech\\nuser_id: 535fa08**************c062838\\nuser_image: http://canvas.instructure.com/images/messages/avatar-50.png\\ncustom_canvas_api_domain: canvas.docker\\ncustom_canvas_course_id: '1'\\ncustom_canvas_enrollment_state: active\\ncustom_canvas_user_id: '1'\\ncustom_canvas_user_login_id: [email protected]\\ncustom_canvas_workflow_state: available\\next_roles: urn:lti:instrole:ims/lis/Administrator,urn:lti:instrole:ims/lis/Instructor,urn:lti:role:ims/lis/Instructor,urn:lti:sysrole:ims/lis/SysAdmin,urn:lti:sysrole:ims/lis/User\\n\"], [\"created_at\", \"2023-01-10 15:20:38.775806\"], [\"updated_at\", \"2023-01-10 15:20:38.775806\"]]"}
web_1    | {"ts":"2023-01-10T15:20:38.786","unix_ts":1673364038.7867649,"severity":"DEBUG","pid":147,"message":"   (2.0ms)  COMMIT"}
web_1    | {"ts":"2023-01-10T15:20:38.789","unix_ts":1673364038.789574,"severity":"INFO","pid":147,"method":"POST","controller":"LtiProvider::LtiController","action":"launch","format":"html","path":"/launch","request_id":"615bf35cc8bd3a465ebe13a27ba8e461","ip":"128.61.61.221","status":302,"db_runtime":14.695323072373867,"params":{"oauth_consumer_key":"Tk*******************C","oauth_signature_method":"HMAC-SHA1","oauth_timestamp":"1673364035","oauth_nonce":"8LqH29odkR4****************iz9Me3s","oauth_version":"1.0","context_id":"4dde05e8c***************548820eee93a3","context_label":"Testing","context_title":"Testing Course","custom_canvas_api_domain":"canvas.docker","custom_canvas_course_id":"1","custom_canvas_enrollment_state":"active","custom_canvas_user_id":"1","custom_canvas_user_login_id":"[email protected]","custom_canvas_workflow_state":"available","ext_roles":"urn:lti:instrole:ims/lis/Administrator,urn:lti:instrole:ims/lis/Instructor,urn:lti:role:ims/lis/Instructor,urn:lti:sysrole:ims/lis/SysAdmin,urn:lti:sysrole:ims/lis/User","launch_presentation_document_target":"iframe","launch_presentation_height":"400","launch_presentation_locale":"en","launch_presentation_return_url":"http://canvas-dev.example.org/courses/1/external_content/success/external_tool_redirect","launch_presentation_width":"800","lis_person_contact_email_primary":"[email protected]","lis_person_name_family":"","lis_person_name_full":"[email protected]","lis_person_name_given":"[email protected]","lti_message_type":"basic-lti-launch-request","lti_version":"LTI-1p0","oauth_callback":"about:blank","resource_link_id":"4dde05e8c***************548820eee93a3","resource_link_title":"Roll Call","roles":"Instructor,urn:lti:instrole:ims/lis/Administrator,urn:lti:sysrole:ims/lis/SysAdmin","tool_consumer_info_product_family_code":"canvas","tool_consumer_info_version":"cloud","tool_consumer_instance_contact_email":"[email protected]","tool_consumer_instance_guid":"t5yCo*****************kk:canvas-lms","tool_consumer_instance_name":"exampleOrg EdTech","user_id":"535fa08**************c062838","user_image":"http://canvas.instructure.com/images/messages/avatar-50.png","oauth_signature":"frYDclV3dynlr+WMu6TEwp8XHo4="},"redirect_location":"https://rollcall.canvas-dev.example.org/cookie_test?nonce=8LqH29odkR4****************iz9Me3s"}
web_1    | 192.168.128.5 - - [10/Jan/2023:15:20:38 +0000] "POST /launch HTTP/1.1" 302 184 "http://canvas-dev.example.org/courses/1/external_tools/4" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:108.0) Gecko/20100101 Firefox/108.0"
web_1    | {"ts":"2023-01-10T15:20:38.872","unix_ts":1673364038.8729892,"severity":"DEBUG","pid":147,"message":"  LtiProvider::Launch Load (1.9ms)  SELECT \"lti_provider_launches\".* FROM \"lti_provider_launches\" WHERE (created_at > '2023-01-10 15:15:38.868125') AND \"lti_provider_launches\".\"nonce\" = $1 LIMIT $2  [[\"nonce\", \"8LqH29odkR4****************iz9Me3s\"], [\"LIMIT\", 1]]"}
web_1    | {"ts":"2023-01-10T15:20:38.876","unix_ts":1673364038.8760638,"severity":"DEBUG","pid":147,"message":"   (0.4ms)  BEGIN"}
web_1    | {"ts":"2023-01-10T15:20:38.877","unix_ts":1673364038.8776205,"severity":"DEBUG","pid":147,"message":"  LtiProvider::Launch Destroy (1.2ms)  DELETE FROM \"lti_provider_launches\" WHERE \"lti_provider_launches\".\"id\" = $1  [[\"id\", 23]]"}
web_1    | {"ts":"2023-01-10T15:20:38.879","unix_ts":1673364038.8792374,"severity":"DEBUG","pid":147,"message":"   (1.3ms)  COMMIT"}
web_1    | {"ts":"2023-01-10T15:20:38.879","unix_ts":1673364038.8799865,"severity":"INFO","pid":147,"method":"GET","controller":"LtiProvider::LtiController","action":"cookie_test","format":"html","path":"/cookie_test?nonce=8LqH29odkR4****************iz9Me3s","request_id":"8e3e9dc56aa0e3da3287a40aa798028c","ip":"128.61.61.221","status":302,"db_runtime":4.876868799328804,"params":{"nonce":"8LqH29odkR4****************iz9Me3s"},"redirect_location":"https://rollcall.canvas-dev.example.org/"}
web_1    | 192.168.128.5 - - [10/Jan/2023:15:20:38 +0000] "GET /cookie_test?nonce=8LqH29odkR4****************iz9Me3s HTTP/1.1" 302 124 "http://canvas-dev.example.org/courses/1/external_tools/4" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:108.0) Gecko/20100101 Firefox/108.0"
web_1    | {"ts":"2023-01-10T15:20:38.931","unix_ts":1673364038.9313533,"severity":"DEBUG","pid":147,"message":"  CanvasOauth::Authorization Load (1.9ms)  SELECT \"canvas_oauth_authorizations\".* FROM \"canvas_oauth_authorizations\" WHERE \"canvas_oauth_authorizations\".\"canvas_user_id\" = $1 AND \"canvas_oauth_authorizations\".\"tool_consumer_instance_guid\" = $2 ORDER BY created_at DESC LIMIT $3  [[\"canvas_user_id\", 1], [\"tool_consumer_instance_guid\", \"t5yCo*****************kk:canvas-lms\"], [\"LIMIT\", 1]]"}
web_1    | {"ts":"2023-01-10T15:20:38.934","unix_ts":1673364038.9340544,"severity":"DEBUG","pid":147,"message":"   (0.4ms)  BEGIN"}
web_1    | {"ts":"2023-01-10T15:20:38.935","unix_ts":1673364038.9354925,"severity":"DEBUG","pid":147,"message":"  CanvasOauth::Authorization Update (0.7ms)  UPDATE \"canvas_oauth_authorizations\" SET \"last_used_at\" = $1, \"updated_at\" = $2 WHERE \"canvas_oauth_authorizations\".\"id\" = $3  [[\"last_used_at\", \"2023-01-10 15:20:38.932117\"], [\"updated_at\", \"2023-01-10 15:20:38.932924\"], [\"id\", 1]]"}
web_1    | {"ts":"2023-01-10T15:20:38.937","unix_ts":1673364038.937365,"severity":"DEBUG","pid":147,"message":"   (1.3ms)  COMMIT"}
web_1    | {"ts":"2023-01-10T15:20:38.939","unix_ts":1673364038.9394524,"severity":"INFO","pid":147,"method":"GET","controller":"HomeController","action":"index","format":"html","path":"/","request_id":"2b563ce27fc0c247dcc6469c51c9cd61","ip":"128.61.61.221","status":302,"db_runtime":4.332938231527805,"params":{},"redirect_location":"https://rollcall.canvas-dev.example.org/courses/1"}
web_1    | 192.168.128.5 - - [10/Jan/2023:15:20:38 +0000] "GET / HTTP/1.1" 302 133 "http://canvas-dev.example.org/courses/1/external_tools/4" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:108.0) Gecko/20100101 Firefox/108.0"
web_1    | {"ts":"2023-01-10T15:20:39.052","unix_ts":1673364039.052046,"severity":"DEBUG","pid":147,"message":"  CanvasOauth::Authorization Load (0.7ms)  SELECT \"canvas_oauth_authorizations\".* FROM \"canvas_oauth_authorizations\" WHERE \"canvas_oauth_authorizations\".\"canvas_user_id\" = $1 AND \"canvas_oauth_authorizations\".\"tool_consumer_instance_guid\" = $2 ORDER BY created_at DESC LIMIT $3  [[\"canvas_user_id\", 1], [\"tool_consumer_instance_guid\", \"t5yCo*****************kk:canvas-lms\"], [\"LIMIT\", 1]]"}
web_1    | {"ts":"2023-01-10T15:20:39.055","unix_ts":1673364039.0551834,"severity":"DEBUG","pid":147,"message":"   (0.5ms)  BEGIN"}
web_1    | {"ts":"2023-01-10T15:20:39.056","unix_ts":1673364039.0562527,"severity":"DEBUG","pid":147,"message":"  CanvasOauth::Authorization Update (0.7ms)  UPDATE \"canvas_oauth_authorizations\" SET \"last_used_at\" = $1, \"updated_at\" = $2 WHERE \"canvas_oauth_authorizations\".\"id\" = $3  [[\"last_used_at\", \"2023-01-10 15:20:39.052886\"], [\"updated_at\", \"2023-01-10 15:20:39.053566\"], [\"id\", 1]]"}
web_1    | {"ts":"2023-01-10T15:20:39.057","unix_ts":1673364039.0577188,"severity":"DEBUG","pid":147,"message":"   (1.0ms)  COMMIT"}
web_1    | {"ts":"2023-01-10T15:20:39.060","unix_ts":1673364039.0603,"severity":"DEBUG","pid":147,"message":"  CanvasOauth::Authorization Load (0.7ms)  SELECT \"canvas_oauth_authorizations\".* FROM \"canvas_oauth_authorizations\" WHERE \"canvas_oauth_authorizations\".\"canvas_user_id\" = $1 AND \"canvas_oauth_authorizations\".\"tool_consumer_instance_guid\" = $2 ORDER BY created_at DESC LIMIT $3  [[\"canvas_user_id\", 1], [\"tool_consumer_instance_guid\", \"t5yCo*****************kk:canvas-lms\"], [\"LIMIT\", 1]]"}
web_1    | {"ts":"2023-01-10T15:20:39.061","unix_ts":1673364039.061852,"severity":"DEBUG","pid":147,"message":"   (0.3ms)  BEGIN"}
web_1    | {"ts":"2023-01-10T15:20:39.063","unix_ts":1673364039.0634634,"severity":"DEBUG","pid":147,"message":"  CanvasOauth::Authorization Update (1.1ms)  UPDATE \"canvas_oauth_authorizations\" SET \"last_used_at\" = $1, \"updated_at\" = $2 WHERE \"canvas_oauth_authorizations\".\"id\" = $3  [[\"last_used_at\", \"2023-01-10 15:20:39.060763\"], [\"updated_at\", \"2023-01-10 15:20:39.061055\"], [\"id\", 1]]"}
web_1    | {"ts":"2023-01-10T15:20:39.064","unix_ts":1673364039.064924,"severity":"DEBUG","pid":147,"message":"   (1.0ms)  COMMIT"}
web_1    | {"ts":"2023-01-10T15:20:39.160","unix_ts":1673364039.160909,"severity":"INFO","pid":147,"message":"API call (95.77ms): get [\"/api/v1/courses/1/enrollments\", {:query=>{:type=>[\"TeacherEnrollment\", \"TaEnrollment\"], :state=>[\"active\", \"completed\"], :user_id=>\"1\", :per_page=>100}, :headers=>{}}]"}
web_1    | {"ts":"2023-01-10T15:20:39.161","unix_ts":1673364039.1613092,"severity":"ERROR","pid":147,"message":"Exception fetching course: CanvasOauth::CanvasApi::Authenticate"}
web_1    | {"ts":"2023-01-10T15:20:39.162","unix_ts":1673364039.1622174,"severity":"INFO","pid":147,"method":"GET","controller":"SectionsController","action":"course","format":"html","path":"/courses/1","request_id":"c959866d412f1bd4d0859b8ef42f6390","ip":"128.61.61.221","db_runtime":6.104961968958378,"params":{"course_id":"1"}}
web_1    | {"ts":"2023-01-10T15:20:39.163","unix_ts":1673364039.1638973,"severity":"DEBUG","pid":147,"message":"SectionsController#course is missing a template for request formats: text/html excluded from capture: DSN not set"}
web_1    | {"ts":"2023-01-10T15:20:39.164","unix_ts":1673364039.1647792,"severity":"FATAL","pid":147,"message":"  \nActionController::MissingExactTemplate (SectionsController#course is missing a template for request formats: text/html):\n  \nactionpack (6.0.4.2) lib/action_controller/metal/implicit_render.rb:45:in `default_render'\nactionpack (6.0.4.2) lib/action_controller/metal/basic_implicit_render.rb:6:in `block in send_action'\nactionpack (6.0.4.2) lib/action_controller/metal/basic_implicit_render.rb:6:in `tap'\nactionpack (6.0.4.2) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'\nactionpack (6.0.4.2) lib/abstract_controller/base.rb:195:in `process_action'\nactionpack (6.0.4.2) lib/action_controller/metal/rendering.rb:30:in `process_action'\nactionpack (6.0.4.2) lib/abstract_controller/callbacks.rb:42:in `block in process_action'\nactivesupport (6.0.4.2) lib/active_support/callbacks.rb:112:in `block in run_callbacks'\nsentry-raven (2.13.0) lib/raven/integrations/rails/controller_transaction.rb:7:in `block in included'\nactivesupport (6.0.4.2) lib/active_support/callbacks.rb:121:in `instance_exec'\nactivesupport (6.0.4.2) lib/active_support/callbacks.rb:121:in `block in run_callbacks'\nactivesupport (6.0.4.2) lib/active_support/callbacks.rb:139:in `run_callbacks'\nactionpack (6.0.4.2) lib/abstract_controller/callbacks.rb:41:in `process_action'\nactionpack (6.0.4.2) lib/action_controller/metal/rescue.rb:22:in `process_action'\npaul_bunyan (1.6.0) lib/paul_bunyan/rails_ext/instrumentation.rb:12:in `block in process_action'\nactivesupport (6.0.4.2) lib/active_support/notifications.rb:180:in `block in instrument'\nactivesupport (6.0.4.2) lib/active_support/notifications/instrumenter.rb:24:in `instrument'\nactivesupport (6.0.4.2) lib/active_support/notifications.rb:180:in `instrument'\npaul_bunyan (1.6.0) lib/paul_bunyan/rails_ext/instrumentation.rb:10:in `process_action'\nactionpack (6.0.4.2) lib/action_controller/metal/params_wrapper.rb:245:in `process_action'\nactiverecord (6.0.4.2) lib/active_record/railties/controller_runtime.rb:27:in `process_action'\nactionpack (6.0.4.2) lib/abstract_controller/base.rb:136:in `process'\nactionview (6.0.4.2) lib/action_view/rendering.rb:39:in `process'\nactionpack (6.0.4.2) lib/action_controller/metal.rb:190:in `dispatch'\nactionpack (6.0.4.2) lib/action_controller/metal.rb:254:in `dispatch'\nactionpack (6.0.4.2) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'\nactionpack (6.0.4.2) lib/action_dispatch/routing/route_set.rb:33:in `serve'\nactionpack (6.0.4.2) lib/action_dispatch/journey/router.rb:49:in `block in serve'\nactionpack (6.0.4.2) lib/action_dispatch/journey/router.rb:32:in `each'\nactionpack (6.0.4.2) lib/action_dispatch/journey/router.rb:32:in `serve'\nactionpack (6.0.4.2) lib/action_dispatch/routing/route_set.rb:834:in `call'\nrack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call'\nrack (2.2.3) lib/rack/etag.rb:27:in `call'\nrack (2.2.3) lib/rack/conditional_get.rb:27:in `call'\nrack (2.2.3) lib/rack/head.rb:12:in `call'\nactionpack (6.0.4.2) lib/action_dispatch/http/content_security_policy.rb:18:in `call'\nrack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context'\nrack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call'\nactionpack (6.0.4.2) lib/action_dispatch/middleware/cookies.rb:654:in `call'\nactionpack (6.0.4.2) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'\nactivesupport (6.0.4.2) lib/active_support/callbacks.rb:101:in `run_callbacks'\nactionpack (6.0.4.2) lib/action_dispatch/middleware/callbacks.rb:26:in `call'\nactionpack (6.0.4.2) lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'\nactionpack (6.0.4.2) lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'\nactionpack (6.0.4.2) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'\npaul_bunyan (1.6.0) lib/paul_bunyan/rails_ext/rack_logger.rb:13:in `call_app'\nrailties (6.0.4.2) lib/rails/rack/logger.rb:26:in `block in call'\npaul_bunyan (1.6.0) lib/paul_bunyan/log_relayer.rb:138:in `tagged'\nrailties (6.0.4.2) lib/rails/rack/logger.rb:26:in `call'\nactionpack (6.0.4.2) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'\nrequest_store (1.5.0) lib/request_store/middleware.rb:19:in `call'\nactionpack (6.0.4.2) lib/action_dispatch/middleware/request_id.rb:27:in `call'\nrack (2.2.3) lib/rack/method_override.rb:24:in `call'\nrack (2.2.3) lib/rack/runtime.rb:22:in `call'\nactivesupport (6.0.4.2) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'\nactionpack (6.0.4.2) lib/action_dispatch/middleware/executor.rb:14:in `call'\nactionpack (6.0.4.2) lib/action_dispatch/middleware/static.rb:126:in `call'\nrack (2.2.3) lib/rack/sendfile.rb:110:in `call'\nactionpack (6.0.4.2) lib/action_dispatch/middleware/host_authorization.rb:76:in `call'\nsentry-raven (2.13.0) lib/raven/integrations/rack.rb:51:in `call'\nrailties (6.0.4.2) lib/rails/engine.rb:527:in `call'\nrailties (6.0.4.2) lib/rails/railtie.rb:190:in `public_send'\nrailties (6.0.4.2) lib/rails/railtie.rb:190:in `method_missing'\n/usr/lib/ruby/vendor_ruby/phusion_passenger/rack/thread_handler_extension.rb:107:in `process_request'\n/usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler/thread_handler.rb:149:in `accept_and_process_next_request'\n/usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler/thread_handler.rb:110:in `main_loop'\n/usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler.rb:419:in `block (3 levels) in start_threads'\n/usr/lib/ruby/vendor_ruby/phusion_passenger/utils.rb:113:in `block in create_thread_and_abort_on_exception'"}

Expected behavior

App should continue to work without issue

Can not start tool from course context

Just fully fresh installed test server with latest prod canvas and latest Roll Call Attendance
Roll Call Attendance starts from account context but does not start from course context.
I see Authorize screen and after nothing.

I see this problem several monthes.
I even tried to go back 9 commits without success.

As you can see on screenshot I see status 306

How to enable logging for Roll Call Attendance?
All logs are empty.

Screenshot from 2023-02-23 08-59-15

Suggestion / request: use Dependabot to keep dependencies up-to-date

First of all, thanks for Canvas and Roll Call!

I've got a suggestion / request: would you be up for using Dependabot to automatically create dependency update PRs for this repo? I ran it against my fork and it generated these PRs. I'll port the aws-sdk-s3 PR over now so you can see what it's like.

I built Dependabot, but I'm honestly only suggesting it because I hope it can save you some time. I'd love any feedback, and whilst obviously having open source repos using Dependabot helps boost its profile, if it's not helpful to you then it's not really worth anything.

You can install it from here or here if you decide to give it a try. It's been through GitHub's security testing (to be allowed in the GitHub Marketplace) and is used by a few thousand organisations, and the source code is here.

:octocat:

Install Roll Call for Canvas LMS on Ubuntu 18.04

Hi, currently I have my Canvas LMS installed on Ubuntu 18.04 (not using Docker), I have tried many ways to install Roll Call but seems cannot get it to works. Is there any way or guideline to install Roll Call locally (the only document now is a guideline for Roll Call with Docker).

Thank you so much for helping.

How to install rollcall-attendance non-docker and file locally instead of Amazon S3

Currently, as I known there is an only way install rollcall-attendance. That is docker!

A Canvas LMS hosting company has offer rollcall-attendance non-docker sub-domain installation

Great! But I don't see anywhere how to do it except them (included fee)

Is it a proprietary solution for a little expert rubier?

Anyone know? please help me.

@authors, please add additional method for rollcall-attendance non-docker app installation

Also

Please provides additional method for file storage locally, instead of Amazon S3

Thank you very much!

Consumer secret not configured on provider

Trying to run it without docker.
get message in Canvas:
Consumer secret not configured on provider. Please be sure you are launching this tool from the link provided in Canvas.

What config is missing?

Another way to install without using Docker

Roll Call can be run locally on your machine..

What is this other way of installing? I don't use Canvas LMS in Docker.

I appreciate if you can share another installation method on a server (Debian / Ubuntu)

db:create permission issue

Environment: Ubuntu Server 18.04
Docker: 18.06.1-ce, build e68fc7a
Docker Compose: version 1.22.0, build f46880fe

docker-compose run --rm web bundle exec rake db:create fails with a permission error.

Errno::EACCES: Permission denied @ dir_s_mkdir - /usr/src/app/tmp
/home/docker/.gem/ruby/2.4.0/gems/bootsnap-1.3.1/lib/bootsnap/load_path_cache/store.rb:73:in `dump_data'
/home/docker/.gem/ruby/2.4.0/gems/bootsnap-1.3.1/lib/bootsnap/load_path_cache/store.rb:55:in `commit_transaction'
/home/docker/.gem/ruby/2.4.0/gems/bootsnap-1.3.1/lib/bootsnap/load_path_cache/store.rb:47:in `transaction'
/home/docker/.gem/ruby/2.4.0/gems/bootsnap-1.3.1/lib/bootsnap/load_path_cache/cache.rb:130:in `push_paths_locked'
/home/docker/.gem/ruby/2.4.0/gems/bootsnap-1.3.1/lib/bootsnap/load_path_cache/cache.rb:113:in `block in reinitialize'
/home/docker/.gem/ruby/2.4.0/gems/bootsnap-1.3.1/lib/bootsnap/load_path_cache/cache.rb:107:in `synchronize'
/home/docker/.gem/ruby/2.4.0/gems/bootsnap-1.3.1/lib/bootsnap/load_path_cache/cache.rb:107:in `reinitialize'
/home/docker/.gem/ruby/2.4.0/gems/bootsnap-1.3.1/lib/bootsnap/load_path_cache/cache.rb:14:in `initialize'
/home/docker/.gem/ruby/2.4.0/gems/bootsnap-1.3.1/lib/bootsnap/load_path_cache.rb:33:in `new'
/home/docker/.gem/ruby/2.4.0/gems/bootsnap-1.3.1/lib/bootsnap/load_path_cache.rb:33:in `setup'
/home/docker/.gem/ruby/2.4.0/gems/bootsnap-1.3.1/lib/bootsnap.rb:24:in `setup'
/home/docker/.gem/ruby/2.4.0/gems/bootsnap-1.3.1/lib/bootsnap/setup.rb:33:in `<top (required)>'
/usr/src/app/config/boot.rb:22:in `require'
/usr/src/app/config/boot.rb:22:in `<top (required)>'
/usr/src/app/config/application.rb:18:in `require'
/usr/src/app/config/application.rb:18:in `<top (required)>'
/usr/src/app/Rakefile:22:in `require'
/usr/src/app/Rakefile:22:in `<top (required)>'
/home/docker/.gem/ruby/2.4.0/gems/rake-12.3.1/exe/rake:27:in `<top (required)>'

precompile warnings

I, [2024-04-18T10:47:15.680126 #25487] INFO -- : Writing /home/attendance/public_html/public/assets/wood_pattern_@2X-0d8125315ea907d5c815020a1284fcf557f1342c721a0a4f9aea23aaf9cfbb53.png
/home/attendance/public_html/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.2/lib/sprockets/erb_processor.rb:21: warning: Passing safe_level with the 2nd argument of ERB.new is deprecated. Do not use it, and specify other arguments as keyword arguments.
/home/attendance/public_html/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.2/lib/sprockets/erb_processor.rb:21: warning: Passing trim_mode with the 3rd argument of ERB.new is deprecated. Use keyword argument like ERB.new(str, trim_mode: ...) instead.

W, [2024-04-18T10:47:21.861651 #25487] WARN -- : Removed sourceMappingURL comment for missing asset 'es5-shim.map' from /home/attendance/public_html/vendor/assets/javascripts/es5-shim.min.js
I, [2024-04-18T10:47:52.669576 #25487] INFO -- : Writing /home/attendance/public_html/public/assets/application-deabb6cbdad7807571a2b85191fe47f617113597a5bef2190b349c404e1f0e41.js
I, [2024-04-18T10:47:52.674843 #25487] INFO -- : Writing /home/attendance/public_html/public/assets/application-deabb6cbdad7807571a2b85191fe47f617113597a5bef2190b349c404e1f0e41.js.gz
/home/attendance/public_html/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.2/lib/sprockets/erb_processor.rb:21: warning: Passing safe_level with the 2nd argument of ERB.new is deprecated. Do not use it, and specify other arguments as keyword arguments.
/home/attendance/public_html/vendor/bundle/ruby/3.3.0/gems/sprockets-3.7.2/lib/sprockets/erb_processor.rb:21: warning: Passing trim_mode with the 3rd argument of ERB.new is deprecated. Use keyword argument like ERB.new(str, trim_mode: ...) instead.
I, [2024-04-18T10:47:58.872224 #25487] INFO -- : Writing /home/attendance/public_html/public/assets/application-561a3a57aabde0160643932f751a2f9c3371c3219722ad373f7afa2c51d2c4df.css
I, [2024-04-18T10:47:58.874009 #25487] INFO -- : Writing /home/attendance/public_html/public/assets/application-561a3a57aabde0160643932f751a2f9c3371c3219722ad373f7afa2c51d2c4df.css.g

Other roll-call attendance installation paths, including on Canvas VM from Bitnami

Hello.

Many times I tried to install a roll-call attendance according to this instruction to Canvas in a virtual machine (Debian) from Bitnami. But it doesn’t work, the system stops working, and the tool does not install, all the time errors. Even docker did not manage to be fully installed.

Please help me in what other ways can be installed on Canvas in a virtual machine (Debian) from Bitnami, since the structure there is a little different.

Thank you.
Best regards.

configure.xml

I set up Roll Call Attendance in docker.
Hwever there is no configure.xml located then there is error when I set up from CANVAS.

if I access to roll call attendance from outside browser, below is message.
What is missing?

NoSuchBucket
The resource you requested does not exist
configure.xml
1

Dependabot can't resolve your Ruby dependency files

Dependabot can't resolve your Ruby dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:

Bundler::GemNotFound with message: Could not find nokogiri-1.11.1-arm64-darwin in any of the sources

If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

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.