我正在尝试将开发(和测试/生产)数据库切换到PostgreSQL,因此我可以将我的rails应用程序部署到Heroku.
按照他们的指示和一个railscast,环顾StackOverflow和Google以正确的方式重写我的database.yml文件,并做其他一切,但我遇到了很多问题,所以我希望有人可以帮我搞清楚还有什么我需要做的.我只会解释一下我在下面尝试过的内容.
一个主要问题是如何处理我的database.yml文件.许多网站不同意,或者根本没有任何用于池或用户名或编码的条目(或者就此而言,整个生产环境).这是我在一些环顾四周并结合后最终得到的结果.这有用吗?:
development:
adapter: postgresql
encoding: unicode
database: <appname>_development
pool: 5
username: <username>
password: <password>
test:
adapter: postgresql
database: <appname>_test
username: <username>
password: <password>
host: localhost
Run Code Online (Sandbox Code Playgroud)
什么是游泳池?我需要编码吗?为什么这么多例子在yml文件中没有生产部分?
根据Railscast的建议,我自行安装了PostgreSQL,然后初始化了db,然后执行了这一行.
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
Run Code Online (Sandbox Code Playgroud)
在另一个StackOverflow回答之后,我确保我的Postgres位于/ usr/local/bin/postgres目录中,并且我将此行添加到我的.bash_profile文件中.
export PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)
另外在Railscast的建议中,我安装了tap专业版,并执行了以下几行:
taps server sqlite://db.development.sqlite3 <username> <password>
Run Code Online (Sandbox Code Playgroud)
然后打开一个新标签并执行:
taps pull postgresql://<username>@localhost/<appname>_development http://localhost//5000
Run Code Online (Sandbox Code Playgroud)
但是当我输入它时,我收到以下错误:
Failed to connect to database:
Sequel::AdapterNotFound -> LoadError: cannot load such file -- sequel/adapters/postgresql
Run Code Online (Sandbox Code Playgroud)
当然,我做错了.(例如,我应该从sqlite3数据库中取出吗?我怎么知道它的url?).但我不知道如何开始排除故障,所以我想我会寻求帮助.
谢谢!
我刚刚为我的Heroku部署的应用程序购买了SSL证书.按照他们的指示,我下载了证书和私钥,将它们保存在server.crt和server.key文件中(其中抛出了一些RapidSSL CA交易),现在正计划推送和部署.担心的是,我的github回购是公开的,我觉得把我的"私人"密钥和证书推送到公共网站是个坏主意.有点失败了SSL的目的,对吧?
但是,如果不发布此信息,我怎么能让它工作?我是SSL和编码的新手,我非常不想丢掉我刚刚花的钱,因为我不明白这一切是如何运作的.
对不起,如果这个问题不是很代码.只是不知道哪里更好问.
编辑 - 我现在正在看Heroku文档说要添加一个Heroku SSL附加组件,然后只需输入
heroku certs:add server.crt server.key
Run Code Online (Sandbox Code Playgroud)
让heroku接收文件并使用SSL证书.但这并没有改变我在PUBLIC仓库中使用PRIVATE安全信息的两个文件的问题.我只是将它们添加到.gitignore或其他什么?
快问.
我在Posts Controller中创建了一个slug方法,以便@ post.slug返回(ex)"this-is-the-name-name".
不知道在我的routes.rb文件中要做什么,让它工作('posts/this-is-the-name-name'),我没有找到一个非常适合答案的问题或指南.知道怎么做吗?
我试图弄清楚如何从Github上的特定提交中获取差异。(基本上,只有一系列与特定提交相关的单个文件差异)。
这个问题上的某些链接帮助我弄清楚了如何在存储库中提取给定文件的内容,但是我无法弄清楚如何为特定的提交提取文件。
或者,更重要的是,如何拉动整个差异(与在Github上查看特定提交时所显示的差不多)。
有没有一种我不希望使用API的简便方法?还是Github的Rails宝石可以做到这样?看了一下Git的宝石,但这似乎并不是我想要的。
我正在构建我的第一个Express应用程序,它需要使用理想情况下仍然安全的API密钥与API进行交互.
所以我想遵循一个基本模式,即将密钥(以及任何未来的环境变量)保存在根目录的.gitignored .env文件中.
为了不重新发明轮子,我使用了这个包,并在我的app.coffee文件(应用程序的根文件)中设置我的env变量:
env = require('node-env-file')
env __dirname + '/.env'
console.log process.env.MY_API_KEY
Run Code Online (Sandbox Code Playgroud)
这会console.log打印出服务器日志的正确密钥.问题出现了:
如果我尝试在我的应用程序稍后加载的一个JS文件中访问该相同的变量,process.env则是一个空对象,因此API密钥是undefined.这不出现是与上述包装的一个问题,因为如果我在CL(定义变量API_KEY=whatever npm start),该行为是相同的-从正确的控制台日志中app.coffee,但不可用更高版本.
有关如何加载密钥不可用的文件的一些信息:
.jsx文件public/javascripts/src,并由gulpinto 编译public/javascripts/build/*.js..js文件public/javascripts/被require通过的一个D .jsx文件..js文件中,process.env返回一个空对象.当我尝试访问process.env的.jsx文件,实际上,我告诉process本身是不确定的.有什么想法在这里发生了什么?我是Express/React的新手,并且不清楚这个process我认为全局和定义的对象在哪里npm start被定义,以及env它中的所有信息发生了什么.
谢谢!如果有任何其他信息有用,请告诉我,或者如果有人对如何更好地处理env我的情况下的私人信息有任何建议.
编辑: …
我正在为iOS应用程序构建Rails后端.后端需要与Facebook连接以获取和使用每个用户的Facebook好友.
但Facebook'朋友'的要求是空的.
我基本上提出以下要求:
curl https://graph.facebook.com/[FILTERED_USER_ID_FOR_APP]?fields=friends&access_token=[FILTERED]&debug=all
Run Code Online (Sandbox Code Playgroud)
我已经看了很多关于这个的StackOverflow帖子(这个,这个,这个,还有更多),但没有找到相同的问题或适合的解决方案.
我似乎已正确设置权限.在Rails应用程序和用户通过iPhone应用程序进行身份验证时,我都设置user_friends为权限之一,事实上,当有人注册时,它会要求他们确定用户朋友的权限.
但是,当我居然要求他们的朋友,我得到回应,告诉我,有有很多朋友,但没有返回任何人.以下响应适用于在应用上肯定有朋友的用户.
{
"data":[],
"summary": {
"total_count": 419
},
"__debug__": {
"messages": [
{
"link": "https:\/\/developers.facebook.com\/docs\/apps\/versions\/",
"message": "No API version was specified. This request defaulted to version v2.7.","type":"warning"
},
{
"link": "https:\/\/developers.facebook.com\/docs\/apps\/changelog#v2_0",
"message": "Only friends who installed this app are returned in API v2.0 and higher. total_count in summary represents the total number of friends, including those who haven't installed the app.", …Run Code Online (Sandbox Code Playgroud) 刚刚在我的rails应用程序中将半透明图像制作成链接
<%= link_to image_tag("cow.png"), cows_path %>
Run Code Online (Sandbox Code Playgroud)
然而,实际的图像并没有占据一个完美的矩形,因为它的透明度,当我用鼠标悬停在它上面时,它会创建一个黑色条,图像下方的图像矩形的宽度,从任何一侧突出图像的不透明部分.
问题是如何让这种悬停行为停止.

透明图像是牛,而黑条则存在问题.棕褐色的东西是页面背景,而不是图像.
有任何想法吗?我只是不知道CSS命令来解决这个问题.
编辑:小提琴.抱歉.离我的电脑有点远.我提出了一些建议,但似乎并没有解决问题.我也可能做错了.这是一个css.scss样式表.
有一个奇怪的小问题.
我想在项目上创建文本悬停以显示该项目的"描述",这是该项目模型的属性.所以我基本上在我看来这样做了:
<div title=<%= item.description %> ><%= item.name %></div>
Run Code Online (Sandbox Code Playgroud)
奇怪的是,虽然所有模型调用都正常工作(item.name和item.description正在调用正确的东西),但只有当我悬停时才会显示item.description的第一个单词.换句话说,如果item.description是"这是一个非常酷的项目!",当我将鼠标悬停在带有item.name的div上时,悬停只是说"This".
这可能与:description属性有关,该属性当前是文本类型(我认为这是长字符串,就像我的描述).但也许不是.
知道为什么会发生这种情况,以及如何解决这个问题?
我觉得我在这里疯了.对我的Post模型进行例行的水豚测试.具体来说,确保新页面在有效提交后重定向到新创建的帖子.所以在我的spec/requests文件夹中,我有这个:
describe "Valid post submission --" do
it "should log in a user and redirect to new post" do
# Sign in works find, so I won't reproduce it
# Make a blogpost
Post.destroy_all
fill_in :name_here, with: "Post Name Here"
fill_in :content_here, with: "This is the content of a really short post."
screenshot_and_open_image
click_on "Post It"
screenshot_and_open_image
puts current_path
page.should have_selector 'h2', text: "prohibited this post"
page.should have_selector 'h1', text: "Post Name Here"
page.should have_selector '.alert', text: "Post was successfully …Run Code Online (Sandbox Code Playgroud) 我知道这有很多问题.我环顾四周,但我似乎没有犯错,我找到了答案.
我的锻炼资源的表单嵌套在用户之下,正在给出错误
undefined method `workouts_path' for #<#<Class:0x007f88939c9e60>:0x007f8891527b20>
Run Code Online (Sandbox Code Playgroud)
那种形式:
= form_for @workout do |f|
... = f.submit
Run Code Online (Sandbox Code Playgroud)
Workouts Controller新动作(产生错误的地方):
def new
@user = User.find(params[:user_id])
@workout = @user.workouts.new
end
Run Code Online (Sandbox Code Playgroud)
锻炼模型以其独特的名字命名.控制器是复数.这是我的路线文件:
resources :users do
resources :workouts
end
Run Code Online (Sandbox Code Playgroud)
相关的佣金路线输出:
user_workouts GET /users/:user_id/workouts(.:format) workouts#index
POST /users/:user_id/workouts(.:format) workouts#create
new_user_workout GET /users/:user_id/workouts/new(.:format) workouts#new
edit_user_workout GET /users/:user_id/workouts/:id/edit(.:format) workouts#edit
user_workout GET /users/:user_id/workouts/:id(.:format) workouts#show
PUT /users/:user_id/workouts/:id(.:format) workouts#update
DELETE /users/:user_id/workouts/:id(.:format) workouts#destroy
Run Code Online (Sandbox Code Playgroud)
(也许它应该转到user_workouts_path,但我不知道为什么它不会自动执行.
此外,我正在使用mongo/mongoid,但我不知道为什么这应该有所作为.我让我的控制器放了@workout,它实例化了一个我可以在服务器日志中看到的新对象:
ActionView::Template::Error (undefined method `workouts_path' for #<#<Class:0x007f8893d0a480>:0x007f8893d12cc0>):
1: = form_for @workout do |f|
2:
3: = f.label :name, "Name …Run Code Online (Sandbox Code Playgroud) 我试图通过在javascript中创建数字到单词函数来改进我的JS.即,它需要1234并吐出"一千二百三十四".来自Ruby背景,并希望编写一些可以处理大量数字的递归,这就是我写的:
var smallNums = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'tweleve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'];
var suffixes = {"trillion": 1000000000000, "billion": 1000000000, "million": 1000000, "thousand": 1000, "hundred": 100};
var tens = {"ninety":90, "eighty":80, "seventy":70, "sixty":60, "fifty":50, "fourty":40, "thirty":30, "twenty":20}
function inWords (num) {
sections = [];
for (var word in suffixes) {
var suffix_val = suffixes[word];
if (num >= suffix_val) {
suffix_multiplier = Math.floor(num / suffix_val);
var toPush = inWords(suffix_multiplier) + …Run Code Online (Sandbox Code Playgroud)