(在下之前一直是在中小企业做全栈,用过一些其他的语言和框架,主要是用 Node/Python 后端+React/Vue 前端,个人项目也用过 Next/Nuxt 。用 Rails 感觉很不一样,这里分享一下。)
首先,Ruby 语言很带美感。
其次,Rails 是很完善又精美的框架
*_previously_changed?
或者*_previously_was
;这种基础逻辑在其他框架下基本都要自己实现,rails 直接自带,省不少事。最后,Ruby 生态我很喜欢,当然这里我喜欢的点不是火爆程度以及工具多,Ruby 当然远没有 Python/Javascript 热。但是我能接触到的 Ruby 论坛和开源项目都是热度恰到好处 - 主要体现在人不是太多,迭代新事物速度不是那么激进。这点很好,不折腾。对比 JS 生态,同样的问题总有一大堆类似的工具解决,而很多工具用两年就淘汰,很糟心。
继续开发去了嘿嘿
]]>本文将为你介绍一个建站新范式:Baklib 。Baklib 是用 Rails 框架构建的基于 Liquid 语言的模版建站平台,作为 Ruby/Rails 开发者,这道菜应该再熟悉不过了。
账号注册地址: https://baklib.com/get-started
首先咱们需要在 Baklib 上注册一个组织管理者账号(免费的)。当你注册好一个组织管理者账号登录到组织后台以后,我们可以看到在组织管理端有一个模板管理,点击即可进入到组织模板管理中心。
*** 如果提示试用版本,则联系客服注明来自 V2EX 申请免费版本 ***
Baklib 上的模板都是开源的,托管在: https://gitlab.com/baklib/themes
你可以做公共模板中选择喜欢的模板,复制 git 链接并添加到 Baklib 上,也可以参考 Baklib 的模板开发要求,自行打造权限的模板。具体参考:Baklib 模板开发中心
在 [市场] 中可以看到所有公共的模板,以及组织自己挂载的模板,选择安装,根据流程即可创建一个站点。
一旦创建好一个站点,就可以有三个入口:前端会自动生成一个独立域名的网站(可解析到自有域名),后台有个独立的网站内容管理端,以及模板在线编辑器。
参考用此模板创建的真实案例: https://release.baklib.cn
重头戏是对模板的二次开发支持,Baklib 设计了一个灵活的网站模板结构,你可以随时在线实时开发、实时预览,包括复杂的自定义字段、排版布局、查询检索等能力。
模板结构
├── assets └── images └── css └── Javascripts └── ... ├── config └── settings_schema.json ├── layout └── theme.liquid ├── locales ├── src ├── statics ├── snippets └── templates
静态文件可直接添加到 statics 目录中,比如添加一个 about.liquid ,直接前端输入地址: /s/about
即可打开。 模板片段添加到 snippets 目录中,比如添加文件 _header.liquid
,在其他文件引用: {% render 'header' %}
。
模板文件添加到 templates 目录中,比如添加文件 blog.liquid
每个模板的页内代码由 HTML ( CSS/JS ) + Liquid 组成,以下是模板首页代码示例:index.liquid
{% assign pages = site.pages['/'].children_in_list %}
<div class="overflow-visible h-auto pb-[70px] min-h-screen bg-slate-100"> <div class="max-w-5xl mx-auto relative flex flex-col sm:flex-row sm:space-x-2 px-3 sm:px-0 pt-[220px]"> <div class="w-full space-y-2 lg:space-y-4 -mt-[60px]"> {% paginate_tag pages, per: 6 %} {% for page in pages %} {% render "card", page: page %} {% else %} {{ 'generic.empty' | t }} {% endfor %} {% render 'paginate', paginate: paginate %} {% endpaginate_tag %} </div> <!-- Sidebar Section --> <aside class="hidden w-64 pl-4 sm:block shrink-0"> {% render 'sidebar', site: site %} </aside> </div> </div> {% schema %} { "name": "Index", "description": "Card Style", "thumb_url": "images/theme/index-card.png", "sub_page_templates": ["page"] } {% endschema %}
如果需要自定义模板页面的字段,则只需要做模板页面的 schame 中声明即可。
"settings": [ { "id": "tags", "type": "tag_picker", "multiple": true, "label": "标签" },
Baklib 支持 18+ 动态表单(见 https://dev.baklib.cn/2a32/forms),足以满足各种类型字段的自定义。
]]>欢迎各位 V 友前来探讨。
]]>适合自己的项目之上做集成
]]>7.0.3
MySQL 版本 5.7.29
Ruby 版本 3.1.1
Rvm 版本 1.29.12
mysql2 版本 ~> 0.5
我的项目正在尝试迁移 m2 芯片,当我尝试运行rails s
时 出现了以下错误
`require': dlopen(/Users/list/.rvm/rubies/ruby-3.1.1/lib/ruby/gems/3.1.0/gems/mysql2-0.5.4/lib/mysql2/mysql2.bundle, 0x0009): symbol not found in flat namespace (_mysql_affected_rows)
我尝试过以下解决方案,都不能解决
bundle config build.mysql2 "--with-ldflags=-L/usr/local/mysql/lib --with-cppflags=-I/usr/local/mysql/include"
gem install mysql2 -v '0.5' -- --with-mysql-cOnfig=/usr/local/mysql/bin/mysql_config --with-ldflags="-L/usr/local/mysql/lib -L$(brew --prefix openssl)/lib" --with-cppflags=-I$(brew --prefix openssl)/include
请问如何解决这个问题?
]]>以前一直都好好,最近遇到 2 次,后端收到貌似重复的 api post 请求
除了请求的发送的时间不同,数据传过来是一模一样的
后端有没有办法判断出是 chrome 自动把 api request 重复发送了一遍,有这种可能吗
还是说用户又点了一次提交按钮
但照理,提交按钮点一次后就 disable 了啊,实在不懂为什么会出现这种情况
]]>想问一个关于 ror 上前台动态显示输入框个数的问题。
比如我指定一个数字 10, 那么前台就显示 10 个输入框,点击提交后,就把这是个用户输入的值发送给后台并作为 list 存储在本地.
如果我指定一个数字 30 , 那么流程相同但是显示给前台三十个输入框。
找了一圈好像没发现在 ror 上有什么比较简单的办法。
还望赐教。多谢。
]]>测试账号:
A 类用户:Yoyo / 123456 B 类用户:Ada / 123456
]]>这是前两天开的帖:t/723318
我的工作是 Go 开发,因为总听说 Ruby 、Rails 很吊,所以业余打算学学,选了《 Agile web development with Rails 6 》一书看的,折腾了 3 天准备放弃了,真的不值一学。
如果一项编程语言的入门,大量时间要花到折腾环境、各种乱七八糟的报错上而无法聚焦到语言、框架本身,那还谈什么提高?
当初学 Go 也就小半天搭了环境就开始写了,Rails 整了 3 天,每天十个小时,到现在rails new demo
都没跑起来,确切的说是没完全跑起来。
安装 Ruby 、Rails就不说了,rails new demo
各种报错,最后localhost:3000
访问到了,但是自从执行 了bin/rails generate controller Say hello goodbye
,历数我遇到的各种奇怪的报错,完全没有任何解决方案:
bin/webpack-dev-server
报错:node:internal/modules/cjs/loader:903 throw err; ^ Error: Cannot find module 'webpack-cli/bin/config-yargs' Require stack:
官方 github issure 各种说版本问题,还让在packge.json
加了scripts:
代码,换成webpack serve
啥的,没点用,我就奇怪了前端圈各种软件库啥的升级从来不考虑向后兼容吗?约定的命令说改就改,改了还没啥用,解决不了旧问题还制造一堆新问题。github 、stack overflow 、csdn 之流都没有任何解决方案:https://github.com/webpack/webpack-dev-server/issues/2759, https://blog.csdn.net/Piconjo/article/details/105744808
比如Cannot find module '@rails/webpacker'
报错:
比如rails new --webpack fails with "Don't know how to build task 'webpacker:install'"
报错:
比如Getting undefined method 'Javascript_pack_tag' for
报错:
比如Command "webpack" not found
报错:
比如ActionView::Template::Error: Webpacker can't find application in /app/public/packs/manifest.json
报错:
…
…………
……………………
………………………………
唯一一个解决的问题是执行bin/rails generate controller Say hello goodbye
没啥反应,用了spring stop
现在我的 rails 是这样的:
$ bin/rails about About your application's environment Rails version 6.0.3.4 Ruby version ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin19] RubyGems version 3.1.4 Rack version 2.2.3 Middleware Webpacker::DevServerProxy, ActionDispatch::HostAuthorization, Rack::Sendfile, ActionDispatch::Static, ActionDispatch::Executor, ActiveSupport::Cache::Strategy::LocalCache::Middleware, Rack::Runtime, Rack::MethodOverride, ActionDispatch::RequestId, ActionDispatch::RemoteIp, Sprockets::Rails::QuietAssets, Rails::Rack::Logger, ActionDispatch::ShowExceptions, WebConsole::Middleware, ActionDispatch::DebugExceptions, ActionDispatch::ActionableExceptions, ActionDispatch::Reloader, ActionDispatch::Callbacks, ActiveRecord::Migration::CheckPending, ActionDispatch::Cookies, ActionDispatch::Session::CookieStore, ActionDispatch::Flash, ActionDispatch::ContentSecurityPolicy::Middleware, Rack::Head, Rack::ConditionalGet, Rack::ETag, Rack::TempfileReaper Application root /Users/coool/ruby/work/demo Environment development Database adapter sqlite3 Database schema version 0
package.json
文件是这样的:
{ "name": "demo", "private": true, "dependencies": { "@rails/actioncable": "^6.0.0", "@rails/activestorage": "^6.0.0", "@rails/ujs": "^6.0.0", "turbolinks": "^5.2.0", "webpack": "^5.4.0" }, "scripts": { "serve": "webpack serve" }, "version": "0.1.0", "devDependencies": { "webpack-cli": "^4.2.0", "webpack-dev-server": "^3.11.0" }, "babel": { "presets": [ "./node_modules/@rails/webpacker/package/babel/preset.js" ] }, "browserslist": [ "defaults" ] }
可能 Rails 确实是殿堂级的框架,但是这个框架的门槛在云上,我在地上上不去……各种环境、升级、代理设置、global 翻墙都没用、版本不兼容、乱七八糟的报错,是我在写 Go 的时候从来没有遇到过的。
另外吐槽一下 Ruby-China 真的……不知道有多少人的耐心是 7 天,反正我这三天,每天十几个小时的折腾这些报错已经耗尽了耐心,放弃了。
]]>rails new demo
命令时到下面这里一直在转圈,很久也不往下走,求指点: warning @rails/webpacker > webpack > watchpack > watchpack-chokidar2 > chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies. warning @rails/webpacker > webpack > watchpack > watchpack-chokidar2 > chokidar > fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2. warning @rails/webpacker > webpack > micromatch > snapdragon > source-map-resolve > resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated warning @rails/webpacker > webpack > micromatch > snapdragon > source-map-resolve > urix@0.1.0: Please see https://github.com/lydell/urix#deprecated [2/4] 🚚 Fetching packages... [3/4] 🔗 Linking dependencies... [4/4] 🔨 Building fresh packages... [-/3] ⠂ waiting... [-/3] ⠂ waiting... [3/3] ⠂ node-sass
就是最后三行,一直在转圈:
[-/3] ⠂ waiting... [-/3] ⠂ waiting... [3/3] ⠂ node-sass
已经用下面这两个命令换了代理:
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ bundle config mirror.https://rubygems.org https://gems.ruby-china.com
]]>这是一个红极一时的 Java Spring Framework 的插件,提供了 ROO shell,几乎是完全照搬 ror 的思路。
但是 它的最后更新日期是 2015。简单的说就是它死了。使用它的开发者活跃在 2010 ~ 2016 年;也就是 在它不再更新之后的一年之内,整个盘子的命运就是人走茶凉 ( 而且 对于 roo 的原创者而言其实是没有任何损失的吧,他不用对 roo 负责,他说不写就不写了 他说不更新了那就不更新了,除非他能专门招聘招来人替他写 ( 成立一个公司 写 roo 盈利 招人 写 roo 盈利 扩招,保持 roo 的不死 ),但是他没有。结果就是 roo 它死了 和 整个盘子的人走茶凉。roo 的开发者圈子也就散了 )。
那么我就要问了,如果有一天 DHH 没有再维护 ror 了怎么办?
( 这是一个假设性问题。乐意谈呢就在这个假设下谈,谢谢,不喜欢谈谈这个假设那就别谈,把它留给想谈的人 )
]]>我们是第 12 届世界无人帆船锦标赛的组委,今年我们首次将这项国际型的赛事带到了中国举办。本地比赛会由浙江大学在浙江省宁波市举办,届时世界各地的无人帆船参赛队伍会在中国参与角逐今年的各个奖项。
作为开源世界的爱好者以及持续贡献者,我们组委会每年都会与当地的开源爱好者一起,共同完成兼具趣味性与竞技性的各项挑战。船舶追踪系统作为赛事的核心系统,在每年的比赛中的实时赛果展示和赛后自动评分中都起到了重要的作用。今年在中国的比赛中,我们希望继续开展和当地爱好者的合作,在以下几个领域中进一步优化船舶追踪系统。其中主要的工作内容有两个方面:
服务器端:
移动端:
如果你有兴趣参与到我们中间来,请发送邮件到 tsaoyu at gmail dot com
GitHub Repository at https://github.com/WRSC/tracking
]]>《 Agile Web Development with Rails 5 》一书的中文版已于年前上市!
本书由华中科技大学出版社引进,感谢出版社和编辑对 Ruby/Rails 的关注!本书由我和 chinakr 合译,感谢 chinakr 的辛勤!本书由大疆 Ruby 技术团队审校,特此感谢!
《 Rails 5 敏捷开发》荣获 Jolt 技术图书大奖。本书以讲解“购书网站”案例为主线,逐步介绍 Rails 的内置功能。全书分为 3 部分,第一部分介绍 Rails 的安装、应用程序验证、Rails 框架的体系结构,以及 Ruby 语言知识;第二部分用迭代方式构建应用程序,然后依据敏捷开发模式开展测试,最后用 Capistrano 完成部署;第三部分补充日常实用的开发知识。本书既有直观的示例,又有深入的分析,同时涵盖了 Web 开发各方面的知识,堪称一部内容全面而又深入浅出的佳作。第 5 版增加了关于 Rails 5 和 Ruby 2.2 新特性和最佳实践的内容。
好了,重点来了。熟悉我的读者知道,每逢我翻译的书上市,我都会搞个赠书活动,这一次也不例外。年前已经送出一波,年后再来一波。
请扫描图中二维码,或者长按图片,识别图中二维码参与此次活动。
活动细节:
补充链接:
]]>本文介绍的内容为:服务器 ubuntu16.04, Rails 项目,mina 发布
adduser newuser
设置新用户密码
在本地生成 SSH KEY (如果已经有了,可以忽略这步。)
打开终端
用你自己的邮箱地址替换下面的命令,并执行
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
生成完之后,在 ~/.ssh/
目录下会添加两个文件,默认情况下一个私钥 id_rsa
, 一个公钥 id_rsa.pub
.
这一步是为了给 mina 发布提供方便,因为 mina 发布需要无密登录服务器,执行发布命令。
id_rsa.pub
文件上传到服务器上, 并添加到 authorized_keys
$ scp ~/.ssh/id_rsa.pub root@your.domain.com:~/.ssh/ $ ssh root@your.domain.com $ cd ~/.ssh/ $ cat id_rsa.pub >> authorized_keys $ rm id_rsa.pub
ssh root@your.domain.com
以上是配置 root
用户无密码登录, 同样给 newuser
用户配置成无密码登录。
root
账号,将服务器上的 ssh 配置关掉密码登录vi /etc/ssh/sshd_config 更新: PasswordAuthentication no
以下操作使用 root
账号执行
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get update sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev nodejs yarn
以下操作使用 newuser
账号执行
cd git clone https://github.com/rbenv/rbenv.git ~/.rbenv echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc exec $SHELL git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc exec $SHELL rbenv install 2.4.3 rbenv global 2.4.3 ruby -v
gem install bundler rbenv rehash
以下操作使用 newuser
账号执行
git config --global color.ui true git config --global user.name "YOUR NAME" git config --global user.email "YOUR@EMAIL.com" ssh-keygen -t rsa -b 4096 -C "YOUR@EMAIL.com"
在服务器上生成了 ssh key 后, 将下面命令输入的内容,复制后粘贴到你 github 账号SSH and GPG keys
下:https://github.com/settings/keys
cat ~/.ssh/id_rsa.pub
ssh -T git@github.com
如果成功会输出以下信息:
Hi kfzyutc! You've successfully authenticated, but GitHub does not provide shell access.
newuser
账号执行以下命令$ gem install rails -v 5.1.4 $ rbenv rehash $ rails -v # Rails 5.1.4
root
账号执行以下命令sudo apt-get install mysql-server mysql-client libmysqlclient-dev
root
账号执行以下命令sudo sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' > /etc/apt/sources.list.d/pgdg.list" wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add - sudo apt-get update sudo apt-get install postgresql-common sudo apt-get install postgresql-9.5 libpq-dev
postgres 安装不会为你设置一个用户,所以你需要按照以下步骤创建一个有权创建数据库的用户。 随意用你的用户名替换 chris
。
sudo -u postgres createuser chris -s # If you would like to set a password for the user, you can do the following sudo -u postgres psql postgres=# \password chris
使用 root
账号登录服务器
将 home/newuser/xxx
, xxx
的目录改成你发布项目的目录,将 example.com
改成你的域名。
upstream RBlog { server unix:///home/newuser/xxx/shared/tmp/sockets/puma.sock fail_timeout=0; } server { listen 80; server_name example.com; root /home/newuser/xxx/current/public; location ^~ /assets/ { gzip_static on; expires max; add_header Cache-Control public; } location /cable { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://xxx; } location ~ ^/(uploads)/ { expires max; break; } try_files $uri/index.html $uri @RBlog; location @xxx { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_redirect off; proxy_pass http://xxx; } error_page 500 502 503 504 /500.html; client_max_body_size 20M; keepalive_timeout 10; }
将以上更换后的配置信息,保存到 /etc/nginx/conf.d/
目录下,命令为 xxx.conf
xxx 用你想要的命名替换。
测试配置信息是否 OK
nginx -t # nginx: the configuration file /etc/nginx/nginx.conf syntax is ok # nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx -s restart
如果你是用这个 模板 创建的 Rails 项目, 以下配置信息都已经添加了,只需要更新目录信息就行。
如果没有需要在 Gemfile 里添加这些 gem 包。
gem 'mina', '~>0.3.8', require: false gem 'mina-puma', '~>0.3.2', require: false gem 'mina-multistage', '~> 1.0', '>= 1.0.2', require: false gem 'mina-sidekiq', '~> 0.3.1', require: false gem 'mina-logs', '>= 0.1.0', require: false gem 'whenever', :require => false
config/puma.rb
, 替换 /home/newuser/xxx
目录.if ENV['RAILS_ENV'] == 'production' app_root = "/home/newuser/xxx/shared" pidfile "#{app_root}/tmp/pids/puma.pid" state_path "#{app_root}/tmp/pids/puma.state" bind "unix://#{app_root}/tmp/sockets/puma.sock" activate_control_app "unix://#{app_root}/tmp/sockets/pumactl.sock" daemonize true workers 4 threads 8, 16 preload_app! on_worker_boot do ActiveSupport.on_load(:active_record) do ActiveRecord::Base.establish_connection end end before_fork do ActiveRecord::Base.connection_pool.disconnect! end else plugin :tmp_restart end
config/deploy.rb
set :stages, %w(production staging utcprod) set :default_stage, 'staging' require 'mina/multistage' require 'mina/bundler' require 'mina/rails' require 'mina/git' require 'mina/rbenv' require 'mina/puma' require "mina_sidekiq/tasks" require 'mina/logs' require 'mina/whenever' set :shared_paths, ['config/database.yml', 'config/newrelic.yml', 'config/application.yml', 'log', 'public/uploads'] task :environment do invoke :'rbenv:load' end task :setup => :environment do queue! %[mkdir -p "#{deploy_to}/shared/tmp/sockets"] queue! %[chmod g+rx,u+rwx "#{deploy_to}/shared/tmp/sockets"] queue! %[mkdir -p "#{deploy_to}/shared/pids"] queue! %[chmod g+rx,u+rwx "#{deploy_to}/shared/pids"] queue! %[mkdir -p "#{deploy_to}/shared/tmp/pids"] queue! %[chmod g+rx,u+rwx "#{deploy_to}/shared/tmp/pids"] queue! %[mkdir -p "#{deploy_to}/#{shared_path}/log"] queue! %[chmod g+rx,u+rwx "#{deploy_to}/#{shared_path}/log"] queue! %[mkdir -p "#{deploy_to}/#{shared_path}/public/uploads"] queue! %[chmod g+rx,u+rwx "#{deploy_to}/#{shared_path}/public/uploads"] queue! %[mkdir -p "#{deploy_to}/#{shared_path}/config"] queue! %[chmod g+rx,u+rwx "#{deploy_to}/#{shared_path}/config"] queue! %[touch "#{deploy_to}/#{shared_path}/config/application.yml"] queue %[echo "-----> Be sure to edit '#{deploy_to}/#{shared_path}/config/application.yml'"] queue! %[touch "#{deploy_to}/#{shared_path}/config/database.yml"] queue %[echo "-----> Be sure to edit '#{deploy_to}/#{shared_path}/config/database.yml'"] end desc "Deploys the current version to the server." task :deploy => :environment do queue %[echo "-----> Server: #{domain}"] queue %[echo "-----> Path: #{deploy_to}"] queue %[echo "-----> Branch: #{branch}"] deploy do invoke :'sidekiq:quiet' invoke :'git:clone' invoke :'deploy:link_shared_paths' invoke :'bundle:install' invoke :'rails:db_migrate' invoke :'rails:assets_precompile' invoke :'deploy:cleanup' to :launch do invoke :'puma:hard_restart' invoke :'sidekiq:restart' invoke :'whenever:update' end end end desc "Deploys the current version to the server." task :first_deploy => :environment do queue %[echo "-----> Server: #{domain}"] queue %[echo "-----> Path: #{deploy_to}"] queue %[echo "-----> Branch: #{branch}"] deploy do invoke :'git:clone' invoke :'deploy:link_shared_paths' invoke :'bundle:install' invoke :'deploy:cleanup' to :launch do invoke :'rails:db_create' end end end
config/deploy/production.rb
,将 domain, deploy_to, repository, branch, user 替换成你自己的信息。set :domain, 'your.domain.com' set :deploy_to, '/home/newuser/xxx' set :repository, 'git@github.com:xxx/xxx.git' set :branch, 'master' set :user, 'newuser' set :puma_config, ->{ "#{deploy_to}/#{current_path}/config/puma/production.rb" }
这些配置信息更新好之后,提交到 github
mina setup mina first_deploy
mina deploy
mina log
mina console
mina ssh
Ubuntu 安装 Rails 环境: https://gorails.com/setup/ubuntu/16.04
]]>半年之后,另外一个同事在 Object X 里加入了 validation
这样就会导致,在本地我重新从头执行脚本 rake db:drop; rake db:create; rake db:migrate;
,就会因为之前的 seed 文件在添加数据的时候会调用 validation,然后却失败了
什么才是正确的方法写 seed migration。禁止一切 callback 吗?
谢谢
]]>wechat
这个 gem。iOS 上,目前生成的网页,首页没问题,一旦点击一次链接就会出现 invalid signature 错误。 搜索了很多相关关键词,甚至关于 React 的微信网页开发的。都没找到什么可以利用的资料。 很想用 turbolinks
,但是现在看来只能关闭了。奇怪的是为什么 Android 正常 iOS 不正常,按理说 iOS 的浏览器应该更稳定才对。
需求很简单,下面这个函数是对字符串进行处理,处理后的字符串差不多是这样: /attachments/download/455/02%E5%AE.jpg 我想把最后一个“/”后面的字符删除,就是返回是 /attachments/download/455/ 应该很简单吧,函数如下:
def htmlesc( str, mode=:Quotes ) if str str.gsub!( '&', '&' ) str.gsub!( '"', '"' ) if mode != :NoQuotes str.gsub!( "'", ''' ) if mode == :Quotes str.gsub!( '<', '<') str.gsub!( '>', '>') end str end
]]>求助了
]]>resources :books
现在我想要设计 API ,显示同一个作者写的所有书
假设, ID 为 1 的书,作者是 A ,这本书的 URI 是
/books/1
那么这个“ A 写的所有书”的 URI 应该怎么设计呢?
这个“作者”就是一个字符串,不是一个 model
是不是这样:(用 similar 表示同一个作者)
/books/1/similar
但是这样的话,又没有体现出 A 的名字
]]>那应该用什么方法实现这个目的呢?
]]>sudo remove ruby 2.2.0 rvm use system
然后就出现的现象就是 jenkins 上打印 ruby -v 的版本是 2.2.0 ,本地 slave 上执行 ruby -v 的版本是 2.3.1 , 但是同样执行 rvm list 都是 ruby 2.3.1 , jenkins 上和 slave 上打印的 ruby 版本不一致,导致很多基于 ruby 安装的命令不能用。 求懂行的指教,问题该如何解决,我希望是 jenkins 上执行 ruby -v 的版本跟 slave mac 上命令行执行的结果应该是一致。 能想到的是jenkins是用基于ssh命令的方式登录的,本地命令行直接打开,所以登录方式是不一致的?
]]>答案在每个人的心中
在这个充满雾霾的夜晚 坐在屋里小小的书桌旁 回想着一切 从当初决定做这件事, 到调研,到产品,到设计,到开发,到上线,这一切真所谓饱经风霜 在这个内容泛滥的年代,什么样的内容产品才适合我们? 要解决一个什么样的问题? 如何解决? 这是我这半年内心自问频率最多的问题
今天它终于有了一个完美的答案
安静地脑补 主旨从互联网信息红海中收录热点,经典的视频资源。目标用户主要针对互联网人群, 视频内容涵盖人们时常关心的领域,他们主要包含:电影、创业经验分享、融资、大会视频、线下活动、专业技能、编程、短视频、热点、科技、企业品牌、搞笑、教育、生活等。 安静的脑补同时也是新一代 CGC 视频内容分发平台,这里收录了互联网人关注的海量视频,采用领先的数据分析技术, 真正的做到:世界的精彩,安静地脑补。
官网链接: http://anjingdenaobu.com?utm_source=ruby-china
播放链接 1 : http://v.qq.com/x/page/h0336p7uc1k.html
播放链接 2 : http://anjingdenaobu.com/p/5006870.html?utm_source=next_comment
欢迎各位小伙伴来吐槽 或者交流
]]>https://www.livecoding.tv/aeradriel/videos/4Oo5J-ruby-on-rails-app-using-rails-5-7
]]>Rails 5 发布了,发现 V 站有几贴在讨论相关话题,我也凑个热闹。
经过一个多月的修订,《 Ruby on Rails 教程(原书第 4 版)》正式发布了。
第 4 版与第 3 版的主要变化有:
rake
命令全部统一为 rails
命令;第 4 版的电子书已经开始销售,上线首周八折优惠,请点击下述两个链接中的一个购买:
英文版需要重新购买,但是我决定:第 3 版的老读者可以免费升级到第 4 版。如果你之前购买过第 3 版,请查收邮件,里面有第 4 版的下载链接。
这是我开始翻译《 Ruby on Rails 教程》以来的第四个版本(之前几版都可以免费在线阅读),在此过程中得到了众多读者的大力支持,再次感谢你们!
]]>Building a Rails app for managing students https://www.livecoding.tv/pinklily/videos/ZDMQK-building-a-rails-app-for-managing-students-2
]]>