我正在寻找用PHP开发一个包,但我不希望它立即在GitHub或某个地方提供.在我的包含一个Packagist文件很容易composer.json,但如何在我的文件中添加一个本地包composer.json?另外,我应该在/vendor/foo/bar(相对于根composer.json)构建包,还是应该把它放在其他地方?
编辑:我想我的问题是关于其他人如何写他们的包.是否每个新包都添加到Packagist中,然后当您想要测试更改时,您提交GitHub(或任何地方),然后通过Composer将其拉回来?这看起来效率很低.
我们正在组建一个我们计划部署到Elastic Beanstalk的PHP站点,并且我想创建一个虚拟化的开发环境来匹配生产.不过,我有几个问题.
因此看起来我可以使用vagrant-aws并将其提供给自定义AMI - 可能是由Beanstalk创建的AMI.这会真的有效吗?好像它使用rsync来复制任何新文件.当我等待它同步时,这是否会减慢开发速度?
更重要的是,如果您想进行任何开发,似乎这依赖于网络连接.是否可以将其脱机以便我可以在没有连接的情况下进行开发(例如在飞机上,在公共汽车上等)?
作为替代方案,有没有人组装一个与Elastic Beanstalk的包和设置相匹配的Vagrant文件?我在搜索中找不到任何东西,但也许我在找错了地方?
最后,是否有任何关于推出这种开发测试的建议?我是以正确的方式思考这个问题,还是有更好的方法来做到这一点?
我很有智慧,所以希望你们能帮助我.在带有docker-machine的OSX 10.11.2中,我有一个docker-compose文件,它应该构建一个本地Dockerfile并为它附加一个MySQL容器.MySQL容器应该挂载我存储数据库数据的本地文件夹,因此如果容器或VM关闭,我可以重新启动它而不会丢失数据.问题是,当我运行它时,它会抛出一个权限错误:
db_1 | 2015-12-23 19:17:59 7facaa89b740 InnoDB: Operating system error number 13 in a file operation.
db_1 | InnoDB: The error means mysqld does not have the access rights to
db_1 | InnoDB: the directory.
Run Code Online (Sandbox Code Playgroud)
我已经尝试过每一种我能想到的排列方式来实现这个目标.我正在阅读它,它可能与docker-machine如何处理OSX权限有关,但是docker-machine的文档说它安装了/Users文件夹,所以这应该不是问题.
这是docker-compose.yml:
web:
build: .
ports:
- "3000:3000"
links:
- db
db:
image: mysql:5.6
ports:
- "3306:3306"
volumes:
- /Users/me/Development/mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: mypass
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我不禁想到这是非常简单的事情.非常感激任何的帮助!
编辑:
drwxr-xr-x 7 me staff 238 Dec 23 12:10 mysql-data/drwxr-xr-x 1 …我对Flask很新,因为它的价值.我正在使用蓝图来分解我的代码,并尝试使用Flask-Assets来提供资产链接.但是出于某种原因,我无法让Flask-Assets在蓝图中工作.
代码结构:
/modules
/base
__init__.py
__init__.py
/static
# ... stuff
/templates
/layout.html
Run Code Online (Sandbox Code Playgroud)
在/modules/base/__init__.py中:
from flask import Blueprint, render_template, request
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.assets import Environment, Bundle
from flask import current_app as app
default = Blueprint('base', __name__)
assets = Environment(app)
css = Bundle('css/bootstrap.min.css')
assets.register('css_all', css)
js = Bundle('js/jquery-1.7.2.min.js', 'js/bootstrap.min.js')
assets.register('js_all', js)
@default.route('/')
def index():
return render_template('index/index.html')
Run Code Online (Sandbox Code Playgroud)
基础布局中有这个:
{% assets "css_all" %}
<link rel="stylesheet" href="{{ ASSET_URL }}" />
{% endassets %}
{% assets "js_all" %}
<script type="text/javascript" src="{{ ASSET_URL }}"></script> …Run Code Online (Sandbox Code Playgroud) 我正在使用Laravel 4及其内置的表单组件.我正在尝试设置它,以便我可以给出默认值的表单集,但如果用户提交并且验证程序失败,它将使用前一个输入的值.但是,下面的代码总是失败.由于某种原因,会话值'threw_error'始终为true,即使表单引发错误也是如此.
似乎一切都是通过会话完成的,这就是为什么我要设置__old_input,这是表单使用的内部键.我究竟做错了什么?我应该像这样使用__old_input,还是有更好的方法来实现这个目标?
我正在使用资源丰富的控制器,因此下面的index()是GET /,而store()是POST /.
class Admin_DetailsController extends Admin_BaseController
{
public function index()
{
$details = Detail::all();
// this is always true for some reason?
if(!Session::get('threw_error', false))
{
Session::put('__old_input', $details);
}
$data['message'] = Session::get('message');
$this->layout->nest('content', 'admin.details.index', $data);
}
public function store()
{
$validator = $this->makeValidator();
if($validator->fails())
{
return Redirect::to('/admin/details')->withErrors($validator)->withInput()->with('threw_error', 1);
}
// process normally
}
}
// in view
{{ Form::text('some_field') }}
Run Code Online (Sandbox Code Playgroud)
编辑:此代码或多或少按预期工作,但Session :: flashInput($ details)优于手动调用__old_input.我尝试删除表单中的一些字段以查看它是否存在,这实际上有效.换句话说,我认为这是我本地版本的PHP或某些配置或其他问题 - 而不是Laravel问题.