“学学半”是一套用 ruby on rails 开发的教学站点。
-
部署于个人电脑中,通过小型的家用路由器,教师和学生可通过多种电子设备(如电脑,手机,平板)进行交互。
-
部署于学校的服务器中,通过覆盖全校的路由器,供全校师生共同使用,教师之间学生之间可以共享数据资源。
-
部署于培训机构的服务器中,可使用登录计费模块进行收费管理,因此这个软件可以用于商业。
-
部署于云端,通过互联网,服务于世界各地的用户。
学学半包含三个模块:内容管理模块,教学管理模块,登录计费模块。
-
创建教科书
-
为教科书添加课文
-
对课文进行字词分析
-
为课文内容添加辅导页面
-
为课文内容添加习题
-
为课文内容添加某种教学方式(有效组织辅导页面)
-
按教学方式安排辅导页面和习题
-
依据记忆曲线进行卡片式练习
-
对所学卡片进行抽查自测
-
使用习题进行随机测试,评价测试
-
将习题组织成试卷,并可限定考试时间,
-
批改答卷
-
创建班级
-
为班级添加学生、班干和各科教师
-
对学生进行各种分组
-
对小组进行评价
-
对班级进行教学
-
布置作业,对作业进行评价
-
班干和教师可对学生的不良记录进行登记和消除
-
利用特定试卷安排班级测验,查看答题,按班级批改答卷
-
用户登录管理,可区分计时用户和特别不计时用户
-
根据计时用户的登录时间,逾期强制下线,充值续时
-
收费管理,出纳现金管理。
-
用户社交(主要是信息交流,不考虑博文留言)
-
学长辅导付费模式。(这是淘宝模式?谁要喔?)
-
多媒体。(硬盘空间得多大啊!不考虑,待多媒体技术稳定再说)
-
Ubuntu 14.04
-
Ruby 2.2.0
-
Rails 4.2.0
-
Sqlite3
-
安装 rvm 。详见 www.rvm.io。一般是两步:
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 $ \curl -sSL https://get.rvm.io | bash -s stable
-
安装 ruby。 在终端输入‘$ rvm install 2.2.0`
-
安装 rails。在终端输入‘$ gem install rails –version 4.2.0 –no-ri –no-rdoc`
-
安装 git。在终端输入‘sudo apt-get install git`
-
获取“学学半”代码。在终端输入‘$ git clone www.github.com/kinders/xxb.git`
-
配置“学学半”。进入学学半的目录中,在终端输入‘$ bundle install`
这个软件包逐个导入js文件,将会拖慢网页的加载时间。可以将gem包里的bootstrap.js文件替换为官网下载的压缩过的bootstrap.min.js(当然,这个文件需要命名为bootsrap.js。
-
更换内核
Ckeditor的内核比较陈旧,并且没有数学公式的编辑功能,可以将它替换掉。ckeditor的自定义方式见: www.ckeditor.com/builder ,选择需要的插件即可下载替换。编辑数学公式则需要‘Mathematical Formulas`插件。替换路径为`~/.rvm/gems/ruby/gems/ckeditor-x-x-x/vendor/assets/javascripts/`。
-
推荐安装插件有:
- Color Button - Enhanced Image - Find / Replace - Font Size and Family - Image Rotate - Justify - Mathematical Formulas - Print - Select All
-
配置ckeditor
具体位置是:~/.rvm/gems/ruby/gems/ckeditor/app/assets/javascripts/ckeditor/config.js 第一,加入mathjax的获取路径:
config.mathJaxLib = '/mathjax/MathJax.js?config=TeX-AMS_HTML';
第二,工具栏:用下面这一段更换gem包中原有的代码,不要依赖app里的config.js,那会导致图片上传功能消失的bug。
config.toolbar = [ { name: 'clipboard', groups: [ 'clipboard', 'undo' ], items: ['Undo', 'Redo', '-', 'SelectAll', '-', 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord' ] }, { name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ], items: [ 'Find', 'Replace', '-', 'Scayt' ] }, // { name: 'forms', items: [ 'Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField' ] }, { name: 'links', items: [ 'Link', 'Unlink', 'Anchor' ] }, { name: 'insert', items: [ 'NumberedList', 'BulletedList', '-', 'Blockquote', 'CreateDiv', '-', 'Image', 'Mathjax', 'Flash', 'Table', 'HorizontalRule', 'SpecialChar' ] }, { name: 'document', groups: [ 'mode', 'document', 'doctools' ], items: [ 'Print', 'Source', 'Maximize'] }, '/', // { name: 'styles', items: [ 'Styles', 'Format', 'Font', 'FontSize' ] }, { name: 'styles', items: [ 'Format', 'Font', 'FontSize' ] }, { name: 'colors', items: [ 'TextColor', 'BGColor' ] }, { name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ], items: [ 'Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat' ] }, { name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ], items: ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', '-', 'Outdent', 'Indent' ] } ];
-
禁用Ckeditor的图片服务器功能。
在‘~/.rvm/gems/ruby/gems/ckeditor/vendor/assets/javascripts/ckeditor/plugins/`路径下有`image/dialogs/image.js`、`link/dialogs/link.js`和`flash/dialogs/flash.js`三个文件,将三个文件里面`browseserver`和`filebrowsers`的`style`改为`display: none;`
-
删除sample文件。
如果没有删除sample文件,部署时预编译assets就会出错。需要删除的文件夹:
- `~/.rvm/gems/ruby/gems/ckeditor/vendor/assets/javascripts/ckeditor/samples/` - `~/.rvm/gems/ruby/gems/ckeditor/vendor/assets/javascripts/ckeditor/skins/xxx/sample/` - `~/.rvm/gems/ruby/gems/ckeditor/vendor/assets/javascripts/ckeditor/skins/xxx/scss/` - `~/.rvm/gems/ruby/gems/ckeditor/vendor/assets/javascripts/ckeditor/skins/xxx/.temp/`
-
创建‘config/database.yml`文件,内容如下:
default: &default adapter: sqlite3 pool: 5 timeout: 5000 development: <<: *default database: db/development.sqlite3 test: <<: *default database: db/test.sqlite3 production: <<: *default database: db/production.sqlite3
-
创建‘config/secrets.yml`文件,生成密钥。
development: secret_key_base: <128位的乱序英文和数字字符> test: secret_key_base: <128位的乱序英文和数字字符> production: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
-
创建‘config/initializers/secret_token.rb`文件,生成密钥。
Depot::Application.config.secret_key_base = '<128位的乱序英文和数字字符>'
-
该数据库一些字段信息参见xxb.ods。
生成数据库:‘$ rake db:setup`
将第一个用户自动设置为管理员的做法司空常见,但这种做法显然不够严谨。基于系统安全,开发人员抛弃了这种做法。当然这么做需要付出点代价:
-
首先进入本应用的目录,在终端(Terminal)里打开rails后台:‘$ rails console`
-
在后台输入:
user = User.find(who_id) # who_id 就是拥有管理员权限的那个人的用户id。 user.add_role :admin
于是后台会弹出类似如下的提示,就表明添加管理员权限成功了:
(0.0ms) begin transaction SQL (0.2ms) INSERT INTO "users_roles" ("user_id", "role_id") VALUES (?, ?) [["user_id", 2], ["role_id", 1]] (130.3ms) commit transaction
-
关闭后台:‘exit`,关闭终端,就可以了。
-
内伤啊!
-
暂无。
-
部署在云端时,应该启用Mailer,并补充代码
推荐使用Passenger和Nginx
-
安装postgresql数据库,创建项目使用的数据库,修改文件‘config/database.yml`,初始化生产数据库。
-
安装passenger。在终端输入‘$ gem install passenger`
-
安装nginx。在终端输入‘$ passenger install nginx-module`,安装位置选择`/opt/nginx`
-
配置nginx。修改‘/opt/nginx/conf/nginx.conf`文件
server { listen 80; server_name localhost; root /xx/xx/rails_app/public; passenger_enabled on; rails_env production; }
-
预编译assets。在终端输入‘$ RAILS_ENV=production rake assets:precompile`
-
启动“学学半”。在终端输入‘$ sudo /opt/nginx/sbin/nginx`
-
关闭“学学半”。在终端输入‘$ sudo /opt/nginx/sbin/nginx -s quit`
-
许可证:GPLv3。
-
这是一个自由软件,您可自由复制、自由使用、自由修改,乃至发布为新的自由软件。
-
需要其他许可证的,可与作者联系。